MySQL Error Field xxx doesn't have a default value
จากการตรวจสอบพบว่า Server นี้มีการใช้งานฐานข้อมูล MySQL เวอร์ชั่น 5.0.11 ซึ่งเป็นฐานข้อมูลปี 2005 (http://dev.mysql.com/doc/relnotes/mysql/5.0/en/news-5-0-11.html) บน Windows Server และ PHP 5.6.0
ทีแรกผมแก้ปัญหา โดยใช้วิธีกำหนดค่า default ให้กับทุกฟิลด์ ซึ่งก็พบว่ามันสามารถทำงานได้ตามปกติครับ แต่ปัญหาคือมันต้องมานั่งทำแบบนี้กับทุกตารางครับ วิธีนี้เลยไม่ค่อยสะดวกเท่าไร แต่ก็ใช้แก้ขัดได้
ในกรณีที่สามารถเข้าถึง root ของ Server ได้ ผมแนะนำให้แก้ไขการตั้งค่าของ MySQL แทนครับ เนื่องจากปัญหาข้างต้นเกิดจากการตั้งค่า Server SQL Modes ให้อยู่ในโหมด Strict SQL Mode ซึ่งจะมีผลให้ ในการ Insert และ update ข้อมูล จะต้องมีการระบุข้อมูลให้ครบทุกฟิลด์ หรือ ต้องมีการกำหนดค่า Default ให้กับฟิลด์ที่ไม่ได้มีการกรอกข้อมูล
การแก้ไข เปิดไฟล์ my.ini หรือ my.cnf (ลองมองหาดูนะครับ Server แต่ละเวอร์ชั่นอาจแตกต่างกัน) มองหา sql_mode และกำหนดค่าให้เป็นดังด้านล่าง
sql_mode=""
หรือถ้าหาไม่พบ สามารถเพิ่มการตั้งค่านี้ลงใน section [mysqld]
จากนั้น restart MySQL Server ครับ
ข้อมูลเพิ่มเติม https://mariadb.com/...en/library/sql-mode/