Error mysql default value untuk field DATE atau DATETIME

ketika ingin update field ataupun create table dan menggunakan default value '0000-00-00 00:00:00', pasti akan mendapatkan pesan eror:

ERROR 1067 (42000): Invalid default value for 'updated'

Eror ini terjadi karena mode sql menggunakan mode ‘strict’ seperti yang disebutkan di dokumentasi terbaru MYSQL 5.7.

Dokumentasi MySQL 5.7 berbunyi:

Strict mode affects whether the server permits ‘0000-00-00’ as a valid date: If strict mode is not enabled, ‘0000-00-00’ is permitted and inserts produce no warning. If strict mode is enabled, ‘0000-00-00’ is not permitted and inserts produce an error, unless IGNORE is given as well. For INSERT IGNORE and UPDATE IGNORE, ‘0000-00-00’ is permitted and inserts produce a warning.

Secara umum eror ini muncul ketika develop di local server, karena rata-rata hosting (khususnya yang ber-cpanel) menggunakan mariaDB.

Untuk mengatasinya tinggal mengeset sql_mode='' dalam file my.cnf di Linux atau MacOS. Untuk windows biasanya ada di file my.ini.

Sebagai tambahan, di MySQL versi 5.7.4 mode ini deprecated. Tapi versi ini belum stable/rilis. Tapi setelah saya cek malah udah ada versi 8.0, tapi dibeberapa repo masih pakai versi 5.7.x, entah kenapa.

Leave a Comment

Your email address will not be published. Required fields are marked *