首頁 >資料庫 >mysql教程 >當我使用 `0000-00-00 00:00:00` 作為 MySQL 中 TIMESTAMP 欄位的預設值時,為什麼會收到「Invalid default value for \'create_date\'\」?

當我使用 `0000-00-00 00:00:00` 作為 MySQL 中 TIMESTAMP 欄位的預設值時,為什麼會收到「Invalid default value for \'create_date\'\」?

DDD
DDD原創
2024-10-31 15:37:01252瀏覽

Why am I getting

修正MySQL 中TIMESTAMP 欄位的無效預設值

嘗試使用TIMESTAMP 欄位建立表格並指定預設值' 0000-00-00 000 :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>
    停用NO_ZERO_DATE SQL 模式:
  • 禁用NO_ZERO_DATE SQL 模式:

    <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>
使用IGNORE 選項允許插入零日期:

進行這些調整後,您應該能夠成功建立具有指定TIMESTAMP 欄位預設值的表。

以上是當我使用 `0000-00-00 00:00:00` 作為 MySQL 中 TIMESTAMP 欄位的預設值時,為什麼會收到「Invalid default value for 'create_date'」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn