ホームページ >データベース >mysql チュートリアル >MySQL エラー 1067: 'created_at' のデフォルト値が無効ですというメッセージが表示されるのはなぜですか?

MySQL エラー 1067: 'created_at' のデフォルト値が無効ですというメッセージが表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 08:40:11892ブラウズ

Why Am I Getting MySQL ERROR 1067: Invalid Default Value for 'created_at'?

MySQL エラー 1067 のトラブルシューティング: 新しい列の追加中に 'created_at' のデフォルト値が無効です

新しい列を追加してテーブルを変更しようとしていますこの列ではエラー「ERROR 1067」が発生する場合があります。 (42000): 'created_at' のデフォルト値が無効です。」このエラーは通常、タイムスタンプ列を変更するときに発生します。ただし、タイムスタンプ以外の列を追加するときにも発生する可能性があります。

原因:

このエラーは、MySQL の sql_modes 設定によって発生します。具体的には、「NO_ZERO_IN_DATE」モードと「NO_ZERO_DATE」モードにより、デフォルトのタイムスタンプ値「0000-00-00」と「00:00:00」が created_at 列と updated_at 列に保存されなくなります。

解決策:

エラーを解決するには、 sql_modes 設定の「NO_ZERO_IN_DATE」および「NO_ZERO_DATE」モード。

手順:

  1. 現在の確認sql_modes:

    show variables like 'sql_mode' ; 
  2. 問題のあるモードの削除:

    • 現在のモードを一時的に無効にしますセッション:

      SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    • グローバル モードを永続的に設定します:

      SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
  3. 追加の再試行列:

    ALTER TABLE investments ADD bank TEXT;

注:

MySQL の新しいバージョンのデフォルトの sql_mode には、「NO_ZERO_IN_DATE」と「NO_ZERO_DATE」が含まれています。 "モード。したがって、sql_modes 設定を定期的に確認し、このエラーが発生した場合は必要な調整を行うことが重要です。

以上がMySQL エラー 1067: 'created_at' のデフォルト値が無効ですというメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。