MySQLでカラム名を変更しようとしたらERROR 1067 (42000): Invalid default value for ‘column_name’メッセージが出力された

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

コメント

タイトルとURLをコピーしました