Windows MySQL v5 gặp lỗi nhưng Linux và các phiên bản khác chỉ đưa ra cảnh báo. Cái này cần được sửa chữa. WTF?
Ngoài ra, hãy xem nỗ lực sửa lỗi này là lỗi # 19498 trong MySQL Bugtracker:
Bryce Nesbitt vào ngày 4 tháng 4 năm 2008 4:36 chiều:
Trên MS Windows, quy tắc "không có ĐỊNH NGHĨA" là một lỗi, trong khi trên các nền tảng khác, quy tắc này thường là một cảnh báo. Mặc dù không phải là một lỗi, nhưng bạn có thể bị mắc kẹt bởi điều này nếu bạn viết mã trên một nền tảng khoan dung và sau đó chạy nó trên một nền tảng nghiêm ngặt:
Cá nhân tôi xem đây là một lỗi. Tìm kiếm "cột BLOB / TEXT không được có giá trị mặc định" trả về khoảng 2.940 kết quả trên Google. Hầu hết chúng là báo cáo về sự không tương thích khi cố gắng cài đặt các tập lệnh DB hoạt động trên một hệ thống nhưng không hoạt động trên hệ thống khác.
Hiện tôi đang gặp phải sự cố tương tự trên một ứng dụng web mà tôi đang sửa đổi cho một trong những khách hàng của mình, ban đầu được triển khai trên Linux MySQL v5.0.83-log. Tôi đang chạy Windows MySQL v5.1.41. Ngay cả khi cố gắng sử dụng phiên bản phpMyAdmin mới nhất để trích xuất cơ sở dữ liệu, nó không báo cáo mặc định cho cột văn bản được đề cập. Tuy nhiên, khi tôi thử chạy một bộ chèn trên Windows (hoạt động tốt trên triển khai Linux), tôi nhận được lỗi không có mặc định trên cột ABC. Tôi cố gắng tạo lại cục bộ bảng với giá trị mặc định rõ ràng (dựa trên lựa chọn các giá trị duy nhất cho cột đó) và cuối cùng nhận được cột BLOB / TEXT rất hữu ích không thể có giá trị mặc định .
Một lần nữa, việc không duy trì khả năng tương thích cơ bản giữa các nền tảng là không thể chấp nhận được và là một lỗi.
Cách tắt chế độ nghiêm ngặt trong MySQL 5 (Windows):
-
Chỉnh sửa /my.ini và tìm dòng
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
Thay thế nó bằng
sql_mode='MYSQL40'
-
Khởi động lại dịch vụ MySQL (giả sử rằng đó là mysql5)
net stop mysql5 net start mysql5
Nếu bạn có quyền truy cập root / admin, bạn có thể thực thi
mysql_query("SET @@global.sql_mode='MYSQL40'");