MySQL

2013-09-26, mysql

日付に0をセットできない

以下のような見慣れないエラーに遭遇して、しばし苦戦してしまいました。MySQLでは、日付の各フィールドに0を代入して「不明」の状態を表すことが出来ますが、それが許可されない場面もこのように存在します。

Incorrect datetime value: '0000-00-00 00:00:00' for column 'foo' at row 1

SQL_MODEという変数の値でこれを見分けることができます。

mysql> show variables where variable_name like 'sql_mode';

上記の結果に「STRICT_ALL_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE」などという値が設定されていると0値が認められなくなるようです(STRICT..の詳細は未調査)。

更新日付など、「不明」状態を許可したくない場合には有効な設定かもしれませんが、データベース全体に影響してしまう設定なので変更時は注意が必要です。列単位で指定する方法は無いのでしょうか?

参考URL

この記事は役に立ちましたか?