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 サイトの他の関連記事を参照してください。