Windows MySQL v5 มีข้อผิดพลาดเกิดขึ้น แต่ Linux และเวอร์ชันอื่น ๆ จะแจ้งเตือนเท่านั้น สิ่งนี้จะต้องได้รับการแก้ไข WTF?
ดูความพยายามที่จะแก้ไขข้อผิดพลาด # 19498 ใน MySQL Bugtracker:
Bryce Nesbitt เมื่อวันที่ 4 เมษายน 2008 เวลา 16:36 น.:
บน MS Windows กฎ "no DEFAULT" เป็นข้อผิดพลาดขณะที่บนแพลตฟอร์มอื่น ๆ มักจะเป็นคำเตือน แม้ว่าจะไม่ใช่จุดบกพร่อง แต่ก็เป็นไปได้ที่จะติดกับสิ่งนี้หากคุณเขียนโค้ดบนแพลตฟอร์มแบบผ่อนปรนและเรียกใช้ในภายหลังบนแพลตฟอร์มที่เข้มงวด:
โดยส่วนตัวฉันคิดว่านี่เป็นข้อผิดพลาด การค้นหา "คอลัมน์ BLOB / TEXT ไม่สามารถมีค่าเริ่มต้น" ส่งคืนผลลัพธ์ประมาณ 2,940 รายการใน Google ส่วนใหญ่เป็นรายงานความเข้ากันไม่ได้เมื่อพยายามติดตั้งสคริปต์ DB ที่ทำงานบนระบบเดียว แต่ไม่ใช่ระบบอื่น
ฉันพบปัญหาเดียวกันตอนนี้บนเว็บแอพที่ฉันกำลังแก้ไขสำหรับลูกค้าของฉันซึ่งเดิมติดตั้งบน Linux MySQL v5.0.83-log ฉันใช้ Windows MySQL v5.1.41 แม้พยายามใช้ phpMyAdmin เวอร์ชันล่าสุดเพื่อแยกฐานข้อมูล แต่ก็ไม่รายงานค่าเริ่มต้นสำหรับคอลัมน์ข้อความที่เป็นปัญหา แต่เมื่อฉันลองเรียกใช้การแทรกบน Windows (ใช้งานได้ดีกับการปรับใช้ Linux) ฉันได้รับข้อผิดพลาดในคอลัมน์ ABC ฉันพยายามสร้างตารางในเครื่องใหม่โดยใช้ค่าเริ่มต้นที่ชัดเจน (ขึ้นอยู่กับการเลือกค่าที่ไม่ซ้ำสำหรับคอลัมน์นั้น) และท้ายที่สุดได้รับคอลัมน์ BLOB / TEXT ที่มีประโยชน์และไม่สามารถมีค่าเริ่มต้นได้
อีกครั้งการไม่รักษาความเข้ากันได้พื้นฐานข้ามแพลตฟอร์มนั้นไม่เป็นที่ยอมรับและเป็นจุดบกพร่อง
วิธีปิดการใช้งานโหมดเข้มงวดใน MySQL 5 (Windows):
แก้ไข /my.ini และค้นหาบรรทัด
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
แทนที่ด้วย
sql_mode='MYSQL40'
เริ่มบริการ MySQL ใหม่ (สมมติว่าเป็น mysql5)
net stop mysql5
net start mysql5
หากคุณมีสิทธิ์การเข้าถึงรูต / ผู้ดูแลระบบคุณอาจสามารถดำเนินการได้
mysql_query("SET @@global.sql_mode='MYSQL40'");