ホームページ > データベース > mysql チュートリアル > MySQL の TIMESTAMP フィールドのデフォルトとして「0000-00-00 00:00:00」を使用すると、「\'create_date\' のデフォルト値が無効です」というメッセージが表示されるのはなぜですか?

MySQL の TIMESTAMP フィールドのデフォルトとして「0000-00-00 00:00:00」を使用すると、「\'create_date\' のデフォルト値が無効です」というメッセージが表示されるのはなぜですか?

DDD
リリース: 2024-10-31 15:37:01
オリジナル
247 人が閲覧しました

Why am I getting

MySQL の TIMESTAMP フィールドの無効なデフォルト値を修正する

TIMESTAMP フィールドを含むテーブルを作成しようとし、デフォルト値 ' を指定する場合0000-00-00 00:00:00' の場合、「'create_date' のデフォルト値が無効です」というエラーが発生する場合があります。これは、多くの場合、MySQL サーバーの SQL モード設定が原因です。

説明

NO_ZERO_DATE SQL モードは、ゼロ日付の処理に関して厳密さを適用します。 「0000-00-00」は無効な値とみなされ、有効な日付として挿入されなくなります。

解決策

エラーを解決するには、次のいずれかを実行できます。 :

  • NO_ZERO_DATE SQL モードを無効にします:

    <code class="mysql">SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION';</code>
    ログイン後にコピー
  • ゼロ日付の挿入を許可するには、IGNORE オプションを使用します:

    <code class="mysql">CREATE TABLE IF NOT EXISTS `erp`.`je_menus` (
      `id` INT(11) NOT NULL AUTO_INCREMENT ,
      `name` VARCHAR(100) NOT NULL ,
      `description` VARCHAR(255) NOT NULL ,
      `live_start_date` DATETIME NULL DEFAULT NULL ,
      `live_end_date` DATETIME NULL DEFAULT NULL ,
      `notes` VARCHAR(255) NULL ,
      `create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' IGNORE,
      `created_by` INT(11) NOT NULL ,
      `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
      `updated_by` INT(11) NOT NULL ,
      `status` VARCHAR(45) NOT NULL ,
      PRIMARY KEY (`id`)
    ) ENGINE = InnoDB;</code>
    ログイン後にコピー

これらの調整を行うと、TIMESTAMP フィールドに指定されたデフォルト値を使用してテーブルを正常に作成できるようになります。

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

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