Khi các bạn can thiệp chỉnh sửa trên bảng CSDL của WordPress. WordPress chạy MySQL Server, mình gặp 1 lỗi khi thực hiện câu lệnh Alter đó là:
Error Code: 1067. Invalid default value for ‘post_date’
Nguyên nhân là do sql_mode của MySQL Server đang được thiết lập là:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Bạn có thể kiểm tra lại sql_mode của bạn bằng câu lệnh sql sau:
SELECT @@sql_mode;
Trong các mode được thiết lập ở phía trên có 2 mode là NO_ZERO_IN_DATE,NO_ZERO_DATE là 2 mode ngăn cản bạn thực hiện lệnh Alter vì nó không cho phép giá mặc định mà WordPress đang thiết lập cho cột “post_date” là “0000-00-00 00:00:00”
Vì vậy chúng ta cần set lại sql_mode khi thực hiện câu lệnh alter như sau:
SET SQL_MODE = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; ALTER TABLE `wp_posts` ADD COLUMN `is_featured` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER `comment_count`
Nó sẽ update thành công field “is_featured” vào CSDL của chúng ta.
Nguồn: vinasupport.com