古いMySQL(5.7よりも前)は許容されていたのかな、MySQLを新しくしたら
Invalid datetime format: 1292 Incorrect date value: ‘0000-00-00’ for column ‘date’ at row 1
のようなエラーが出るようになりました。本来なら、nullを入れるようにするとか正しく入れ方を変えるべきですが、コードの修正箇所が多いため、早急にでも対応した場合もあるかと思います。
その場合、MySQLの方でこの値を入れることを許容させることができるようです。
MySQL5.7以降では、NO_ZERO_DATE
がデフォルトで有効になっているため、NO_ZERO_DATE
を無効にすれば許容されるようになります。
phpMyAdminの「SQL」で実行するか(長い文字列の結果が見えないので後者がおすすめ)、ssh接続で mysql -u root -p
を打ってMySQLにログインし、まず以下のSQLを実行すると、現在のグローバルSQLモードがどのようになっているかを表示できます。
SELECT @@global.sql_mode;
確かNO_ZERO_DATE
にが含まれているので、ここからNO_ZERO_DATE
を取り除くことで許容されるようになります。
SET GLOBAL sql_mode = REPLACE(@@sql_mode, 'NO_ZERO_DATE', '');
を実行すると、グローバルSQLモードからNO_ZERO_DATE
を取り除けます。再度、上記の確認を行うと確かにNO_ZERO_DATE
がなくなったことも確認できます。これ以降、「0000-00-00」のような無効な日付フォーマットを入れても許容され、エラーは出なくなります。
本来なら、無効な日付フォーマットは入れるべきではないので、デフォルトでNO_ZERO_DATE
が有効なのでしょうから、あくまでも一時的な応急措置と思っておくのがいいと思います。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。