首页 >数据库 >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 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 字段默认值的表。

以上是当我使用 `0000-00-00 00:00:00` 作为 MySQL 中 TIMESTAMP 字段的默认值时,为什么会收到'Invalid default value for 'create_date'”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn