Sunday, June 24, 2018

MySQL Incorrect datetime value: '0000-00-00 00:00:00'

  • ปัญหาคือ mysql insert แล้ว error ทั้งที่ column นั้น ตั้ง default เป็น 0000-00-00 แล้วนะ (date type)
  • พยายาม insert โดยกำหนดค่า '0000-00-00' ไปให้ด้วยก็ยังไม่ได้อยู่ดี
  • Note that a datetime value of midnight Jan 1, 1970 ('1970-01-01 00:00:00') is a "zero date". That will be evaluated to be '0000-00-00 00:00:00'
  • ใช้ '1970-01-01' แทน หว่า แต่มันไม่เข้าท่า
  • สุดท้ายเค้าบอกว่าให้ตั้งค่า sql mode ให้ใช้ 0000 ได้
  • คอนฟิกบน Ubuntu 18.04 
Solved
sudo nano /etc/msyql/my.cnf
  • เพิ่มตามนี้เข้าไปในไฟล์
[mysqld]
# ... other stuff will probably be here
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
  • จากนั้น save และ restart mysql
sudo systemctl reload apache2
  • เพียงเท่านี้มันก็จะ insert ผ่านแล้ว
Ref
  • https://stackoverflow.com/questions/35565128/mysql-incorrect-datetime-value-0000-00-00-000000/35565866
  • https://www.sitepoint.com/quick-tip-how-to-permanently-change-sql-mode-in-mysql/

2 comments:

  1. Anonymous9:33 AM

    สวัสดีครับ หลังจากเพิ่ม sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    พอ restart mysql service เจอ error ว่า

    Job for mysql.service failed because the control process exited with error code.
    See "systemctl status mysql.service" and "journalctl -xe" for detail.

    ไม่ทราบเกิดจากอะไรครับ ขอบคุณครับ

    ReplyDelete
    Replies
    1. คอนฟิกไฟล์ น่าจะมีปัญหานะคับ ลองคำสั่งดู error => sudo systemctl status mysql.service หรือคำสั่ง sudo journalctl -xe ดูคับ

      Delete