Baru-baru ini Saya mencoba duplicate tabel database WordPress untuk keperluan maintenance tetapi gagal dan muncul ERROR 1067 (42000): Invalid default value for ‘user_registered’. Tetapi saat saya coba dumping atau export table lalu import kembali ke table baru tidak ada masalah. Namun memakan lebih banyak waktu dan tidak fleksibel.
Contoh Errornya seperti berikut ini.
mysql> create table wp_users_ori like wp_users;
ERROR 1067 (42000): Invalid default value for 'user_registered'
Setelah ditelusuri permasalahan tersebut muncul karena sql_modes pada variables MySQL
mysql> show variables like '%sql_mode%';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Solusinya adalah hapus sql_mode “NO_ZERO_IN_DATE,NO_ZERO_DATE”. Bisa melalui set global atau langsung edit file my.cnf
set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';