MySQLでカラム名を変更しようとしたらERROR 1067 (42000): Invalid default value for ‘column_name’メッセージが出力された。
原因
エラーの出力されたカラムはDATETIME型でデフォルト値が0000-00-00 00:00:00になっていた。
MySQLのsql_modeにNO_ZERO_IN_DATE、NO_ZERO_DATEが含まれていたためエラーとなっていた。
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 | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
対処内容
/etc/my.cnfの中にNO_ZERO_IN_DATE、NO_ZERO_DATEを除いてsql_modeの追加をする。
[mysqld] sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
/etc/my.cnfを追加したあとにMySQLを再起動する。
systemctl restart mysqld.service
環境
CentOS 7
MySQL 5.7.22
コメント