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.