Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tắt chế độ SQL nghiêm ngặt trong MySQL 5.7

Nếu ứng dụng của bạn được viết cho các phiên bản MySQL cũ hơn và không tương thích với chế độ SQL nghiêm ngặt trong MySQL 5.7, bạn có thể tắt chế độ SQL nghiêm ngặt. Ví dụ:các ứng dụng như WHMCS 6 và Craft 2 không hỗ trợ chế độ SQL nghiêm ngặt.

Nếu bạn đang sử dụng WHMCS 7, hãy xem bài viết của chúng tôi về cách tùy chỉnh MySQL cho WHMCS 7.

Để tắt chế độ SQL nghiêm ngặt, hãy SSH vào máy chủ của bạn với tư cách root và tạo tệp cấu hình mới bằng nano hoặc trình soạn thảo mà bạn chọn:

sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf

Trong tệp, nhập hai dòng sau:

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Lưu tệp bằng cách nhấn CTRL + X , sau đó y , sau đó ENTER để xác nhận các thay đổi.

Cuối cùng, khởi động lại MySQL bằng lệnh này:

sudo service mysql restart

Thay đổi này vô hiệu hóa hai cài đặt chế độ SQL, STRICT_TRANS_TABLES và ONLY_FULL_GROUP_BY, đã được thêm vào MySQL 5.7 và gây ra sự cố cho một số ứng dụng cũ hơn.

Xác nhận Chế độ SQL Nghiêm ngặt bị Tắt

Bạn có thể xác nhận rằng chế độ SQL nghiêm ngặt đã bị tắt bằng cách chạy lệnh này với tư cách root :

sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

Nếu chế độ nghiêm ngặt bị tắt, bạn sẽ không thấy bất kỳ đầu ra nào từ lệnh đó.

Nếu việc tắt chế độ nghiêm ngặt gây ra bất kỳ sự cố nào cho bạn, bạn có thể bật lại chế độ này bằng cách xóa tệp đó và khởi động lại MySQL.

Lỗi Chế độ SQL nghiêm ngặt trông như thế nào

Nếu ứng dụng của bạn không tương thích với chế độ SQL nghiêm ngặt, bạn sẽ thường thấy các lỗi SQL như:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column
'yourdbname.tblannouncements.date' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt lại mật khẩu ROOT trong MySQL 5.6

  2. Giải quyết lỗi liên kết truyền thông với JDBC và MySQL

  3. Làm cách nào để có được số hàng trong bảng MySQL bằng PHP?

  4. Xác định tệp cấu hình MySQL nào đang được sử dụng

  5. Khắc phục “ERROR 1054 (42S22):Cột không xác định‘… ’trong‘ mệnh đề thứ tự ”khi sử dụng UNION trong MySQL