修复 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中文网其他相关文章!