gpt4 book ai didi

mysql - 没有默认值的时间戳列的默认值错误 1067

转载 作者:行者123 更新时间:2023-11-29 01:54:52 25 4
gpt4 key购买 nike

我在 MySQL 5.5 中填充模式时遇到问题。每个表都有一个“create_time”和“update_time”,它们是时间戳。我更喜欢这些列没有默认值,但即使没有默认值,我也会收到引用默认值的 1067 错误。

#1067 - Invalid default value for 'update_time' 

下面是我的脚本的一部分,由 MySQL Workbench 生成。

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `database` ;

CREATE TABLE IF NOT EXISTS `database`.`table` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`create_time` TIMESTAMP NOT NULL,
`update_time` TIMESTAMP NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

如何使用这些时间戳创建此表?

最佳答案

来自 MySQL 文档:

As of MySQL 5.6.5, TIMESTAMP and DATETIME columns can be automatically initializated and updated to the current date and time (that is, the current timestamp). Before 5.6.5, this is true only for TIMESTAMP, and for at most one TIMESTAMP column per table. The following notes first describe automatic initialization and updating for MySQL 5.6.5 and up, then the differences for versions preceding 5.6.5.

由于您使用的是 5.5 并尝试使用 TIMESTAMP 数据类型设置两个属性,因此只能保证一个属性设置默认值。

这是有道理的,因为 update 列抛出错误,第二个要初始化的属性,根据文档不允许生成默认 TIMESTAMP。

关于mysql - 没有默认值的时间戳列的默认值错误 1067,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com