我使用的MySQL版本为5.7.42
SELECT VERSION();
建表语句示例
CREATE TABLE Orders (
order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
a_time TIMESTAMP,
b_time TIMESTAMP
) COMMENT='订单表,用于存储订单信息';
报错为:Invalid default value for 'b_time',意即第二个timestamp字段,b_time字段拥有了非法的默认值。
当我尝试以下建表语句
CREATE TABLE Orders (
order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
a_time TIMESTAMP
) COMMENT='订单表,用于存储订单信息';
可以建表成功,但是发现a_time虽然没有在建表语句中有任何显式定义其默认值,但是建好的表可以看到该字段有默认值 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
由此可知,如果建表语句包含多个timestamp字段,且未显式指定其默认值的时候,MySQL会对所有timestamp字段设定默认值DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,为了避免报错,我采取了以下方式成功建表
CREATE TABLE Orders (
order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
a_time TIMESTAMP NULL DEFAULT NULL,
b_time TIMESTAMP NULL DEFAULT NULL,
c_time TIMESTAMP NULL DEFAULT NULL
) COMMENT='订单表,用于存储订单信息';
标签:COMMENT,建表,timestamp,time,字段,TIMESTAMP,MySQL,NULL From: https://www.cnblogs.com/ashet/p/18458466