ホームページ > データベース > mysql チュートリアル > MySQL で列を追加すると「'created_at' のデフォルト値が無効です」というエラーが発生するのはなぜですか?

MySQL で列を追加すると「'created_at' のデフォルト値が無効です」というエラーが発生するのはなぜですか?

DDD
リリース: 2024-12-02 11:48:10
オリジナル
897 人が閲覧しました

Why Does Adding a Column Result in an

Created_At のデフォルト値が無効です

問題:

によってテーブルを変更しようとしたとき新しい列を追加すると、エラー:

ERROR 1067 (42000): Invalid default value for 'created_at'
ログイン後にコピー

タイムスタンプ列を変更していないにも関わらず。

解決策:

エラーは sql_modes から発生しています。これを解決するには:

  1. SQL モードを確認します:
show variables like 'sql_mode' ;
ログイン後にコピー
  1. 問題のあるモードを無効にします:

から次のモードを削除しますsql_mode:

NO_ZERO_IN_DATE
NO_ZERO_DATE
ログイン後にコピー

これらのモードは、新しい MySQL バージョンにデフォルトで存在します。

グローバル設定:

システム全体の変更の場合、 root として以下を実行します:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
ログイン後にコピー

追加注:

  • エラーを引き起こすことなく新しい列を追加できるようになりました。
  • created_at にデフォルトの NOT NULL 値を使用したい場合は、それを明示的に指定できます。 :
ALTER TABLE investments ADD bank TEXT DEFAULT NOT NULL;
ログイン後にコピー

以上がMySQL で列を追加すると「'created_at' のデフォルト値が無効です」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート