ホームページ >データベース >mysql チュートリアル >タイムスタンプ フィールドのデフォルト値として「0000-00-00 00:00:00」を設定できないのはなぜですか?

タイムスタンプ フィールドのデフォルト値として「0000-00-00 00:00:00」を設定できないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 02:27:30369ブラウズ

Why Can't I Set '0000-00-00 00:00:00' as the Default Value for a Timestamp Field?

エラー メッセージの理解: 'create_date' タイムスタンプ フィールドのデフォルト値が無効です

指定された SQL ステートメントは、次のタイムスタンプ フィールド (create_date) を持つテーブルを作成しようとします。デフォルト値は「0000-00-00 00:00:00」です。ただし、'NO_ZERO_DATE' SQL モードでは、この値を有効な日付として使用することが禁止されています。

このモードが '0000-00-00 00:00:00' を禁止する理由は何ですか?

このモードより厳格な日付検証ルールを適用します。これにより、データ分析で不一致やエラーが発生する可能性がある、「0000-00-00」などのゼロ値を含む日付の挿入が防止されます。

エラーを解決するには?

するにはエラーを解決するには、2 つのオプションがあります:

  1. デフォルト値を変更します: 有効なタイムスタンプ値を設定します (「0000-00-00 00:00:00」以外)。
  2. NO_ZERO_DATE モードを無効にします:

    <code class="sql">SET SQL_MODE=(SELECT REPLACE(@@SQL_MODE, 'NO_ZERO_DATE', ''));</code>

    これにより、モードが一時的に無効になり、テーブルを作成できるようになります。デフォルト値「0000-00-00 00:00:00」を使用します。ただし、データの整合性を確保するために、後でモードを再度有効にすることが重要です。

以上がタイムスタンプ フィールドのデフォルト値として「0000-00-00 00:00:00」を設定できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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