วิธีที่ถูกต้องในการเปลี่ยนกลับโหมดเข้มงวด Mysql 5.7 กลับไปเป็นโหมด 5.6?


10

ฉันได้อัปเกรดเซิร์ฟเวอร์ของเราเป็น Ubuntu 16 ซึ่งรวมถึง Mysql 5.7 และโดยค่าเริ่มต้นโหมด Strict จะเปิดใช้งาน (แม้ว่าจะไม่มีรายการใด ๆ สำหรับไฟล์การกำหนดค่าใด ๆ )

เรามีปัญหาในการนำเข้าฐานข้อมูลที่อยู่ระหว่างการผลิตภายใต้ mysql 5.6 และรุ่นก่อนหน้าและเป็นเพราะโหมดเข้มงวด โดยค่าเริ่มต้นนี่คือสิ่งที่เปิดใช้งาน:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY

ฉันจะกำหนดค่า mysql 5.7 ให้ทำงานตรงตามที่ทำใน 5.6 หรือว่าฐานข้อมูลจาก 5.6 เข้ากันได้กับ 5.7 ได้อย่างไร


ลองคำตอบนี้: stackoverflow.com/a/34426883/534883เหตุการณ์แม้ว่าจะใช้กับ OSX แต่ก็ใช้ได้กับฉันใน Ubuntu
Pit

คำตอบ:


34

หากต้องการปิดใช้งานโหมด SQL แบบเข้มงวดให้ SSH ไปยังเซิร์ฟเวอร์ของคุณเป็นrootและสร้างไฟล์นี้:

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

เปิดไฟล์และป้อนสองบรรทัดต่อไปนี้:

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

รีสตาร์ท MySQL ด้วยคำสั่งนี้:

sudo service mysql restart

การเปลี่ยนแปลงนี้ปิดใช้งานการตั้งค่าโหมด SQL สองรายการSTRICT_TRANS_TABLESและONLY_FULL_GROUP_BYที่เพิ่มเข้ามาใน MySQL 5.7 และทำให้เกิดปัญหาสำหรับแอปพลิเคชันรุ่นเก่าบางรุ่น

การยืนยันโหมด SQL ที่เข้มงวดถูกปิดใช้งาน

คุณสามารถยืนยันโหมด SQL ที่เข้มงวดได้โดยปิดใช้งานคำสั่งนี้rootดังนี้:

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

หากโหมดเข้มงวดถูกปิดใช้งานคุณจะไม่เห็นผลลัพธ์ใด ๆ จากคำสั่งนั้น

หากการปิดใช้งานโหมดเข้มงวดทำให้เกิดปัญหาใด ๆ สำหรับคุณคุณสามารถเปิดใช้งานได้อีกครั้งโดยการลบไฟล์นั้นและเริ่ม MySQL ใหม่อีกครั้ง

ที่มา: วิธีการปิดการใช้งานโหมดเข้มงวด SQL ใน MySQL 5.7


2
นี่เป็นคำตอบที่ถูกต้องและควรทำเครื่องหมายว่ายอมรับแล้ว
budhajeewa

ทำไมไม่เรียกใช้คำสั่งคำสั่งส่งกลับ MySQL นี้ mysql: [ERROR] Found option without preceding group in config file /etc/mysql/conf.d/disable_strict_mode.cnf at line 1!?
Abhishek Saini

1
@AbhishekSaini ใช้เวลาดูที่นี้และนี้
Bilal

1
นี่คือคำตอบ โปรดอ้างอิงนี่เป็นคำตอบ
Lasitha Benaragama

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.