LoginSignup
1
0

More than 1 year has passed since last update.

MySQL 日付'0000-00-00'を許容する

Last updated at Posted at 2022-05-27

前置き

先日、開発環境のデータベースに大量のレコードを取り込んだ際に下記のエラーが表示されました。

Invalid default value for 'date'
-- `日付`のデフォルト値が無効です

原因として、取り込んだレコードのdateのカラムに0000-00-00が存在したため、上記のエラーが表示される状態でした。

MySQLのサーバー設定(SQLモード)ではバージョンにもよりますが、日付型ではデフォルト値が0000-00-00は許容されてない場合がございます。

なのでSQLモードを変更することで0000-00-00の日付を許容することが出来ます。

SQLモードを変更する

# まずはSQLモードの設定を確認する
mysql> SELECT @@GLOBAL.sql_mode;
+-------------------------------------+
| @@GLOBAL.sql_mode                   |
+-------------------------------------+
| NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION |
+-------------------------------------+
※NO_ZERO_DATEが日付に0が入っているレコードが許容しない設定


# NO_ZERO_DATEを無効にする
mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
+------------------------+
| @@GLOBAL.sql_mode      |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+

まとめ

MySQLのSQLモードについては公式のページはこちらです。

日付に関してエラーが表示された場合は、SQLモードの設定を確認してみましょう。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0