MySQL5.6にするとエラー1292 – Incorrect datetime valueが発生する

MySQL

MySQL5.6にバージョンアップしたところ、以前のバージョンでは問題のなかったSQLで下記のようなエラーが発生するようになってしまいました。
#1292 – Incorrect datetime value

原因はMySQL5.6からは、mysql_install_db実行時に/usr/my.cnfというファイルが生成され、sql_modeにSTRICT_TRANS_TABLESが指定されるためです。
MySQL5.5以前ではデフォルトではsql_mode指定はありませんでした。

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

STRICT_TRANS_TABLEを指定しない場合は、INSERT/UPDATE時に不正な値を指定しても自動変換してそれなりなデータを格納しますが、STRICT_TRANS_TABLEを指定すると厳密にエラー扱いして変更をロールバックするようになります。

/etc/my.cnfで/usr/my.cnfのsql_modeを上書きすることはできないようで、/usr/my.cnfを書き換える必要がありました。

my.cnfはRPMに含まれるファイルではありません。

my_sql_install_db実行時に/usr/my.cnfを生成するのは不適切な挙動なのではないかという指摘があり、オプション –keep-my-cnf を指定するとテンプレートからmy.cnfを生成しないように修正されました。
http://bugs.mysql.com/bug.php?id=71600

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です