Khi bạn can thiệp và chỉnh sửa dữ liệu trực tiếp trên cơ sở dữ liệu của WordPress, thường thấy lỗi khi thực hiện lệnh ALTER. Một ví dụ là bạn gặp thông báo lỗi như sau:
“Error Code: 1067. Invalid default value for ‘post_date’.”
Lý do chính của lỗi này liên quan đến chế độ (sql_mode) của MySQL Server. Chúng ta có thể kiểm tra sql_mode hiện tại bằng cách thực hiện câu lệnh SQL sau:
SELECT @@sql_mode;
Trong danh sách sql_mode mặc định, có hai chế độ là “NO_ZERO_IN_DATE” và “NO_ZERO_DATE” có thể gây ra vấn đề cho việc chỉnh sửa cơ sở dữ liệu. Điều này liên quan đến giá trị mặc định mà WordPress thiết lập cho cột “post_date” là “0000-00-00 00:00:00”, và sql_mode ngăn chặn giá trị này.
Để giải quyết vấn đề, bạn có thể cài đặt lại sql_mode khi thực hiện lệnh ALTER. Dưới đây là một ví dụ về việc thực hiện lệnh ALTER cùng với việc set lại sql_mode:
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`
Bằng cách này, bạn có thể thêm trường “is_featured” vào cơ sở dữ liệu của WordPress mà không gặp lỗi.