华为云云数据库rds建表时timestamp字段默认值无效_云淘科技

场景描述

执行建表SQL语句失败,报错:ERROR 1067: Invalid default value for ‘session_start’

CREATE TABLE cluster_membership
(
...
session_start TIMESTAMP DEFAULT '1970-01-01 00:00:01',
...
);

原因分析

关于timestamp字段:MySQL会把该字段插入的值从当前时区转换成UTC时间(世界标准时间)存储,查询时,又将其从UTC时间转化为当前时区时间返回。

timestamp类型字段的时间范围:’1970-01-01 00:00:01′ UTC — ‘2038-01-19 03:14:07’ UTC,详见官方文档。

使用如下命令查看时区:

show variables like “%zone%”;

由于使用的是UTC +8时区,所以timestamp字段默认值需要加8小时才是有效范围,即有效支持的范围是从1970-01-01 08:00:01开始。

解决方案

修改timestamp字段的默认值:

session_start TIMESTAMP DEFAULT '1970-01-01 08:00:01',

父主题: SQL类

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家