Mysql 报错:#1067 - Invalid default value for 'update_time

Posted feiquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 报错:#1067 - Invalid default value for 'update_time相关的知识,希望对你有一定的参考价值。

由于 字段UPDATE_TIME 的字段类型是 timestamp ,默认值是:‘0000-00-00 00:00:00‘

即:`UPDATE_TIME` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘更新时间‘;

在对这个表进行创建的时候,提示:

#1067 - Invalid default value for ‘update_time

 

原因:

timestamp有效时间在:1970-01-01 00:00:00 到 2037-12-31 23:59:59

timestamp类型特点:
1. 占用4个字节
2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如‘1968-01-01‘,虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个对象将被转换为0。
4.值以UTC格式保存( it stores the number of milliseconds)

5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
7. 数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。
8. 默认情况下以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
9. 如果需要可以设置timestamp不自动更新。通过设置DEFAULT CURRENT_TIMESTAMP 可以实现。
修改自动更新:
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
修改不自动更新
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 

解决:

将默认值设置为:1970-01-01 10:00:00之后

 

 

参考文章:

https://blog.csdn.net/souldak/article/details/11737799

以上是关于Mysql 报错:#1067 - Invalid default value for 'update_time的主要内容,如果未能解决你的问题,请参考以下文章

SQL Error(1067):Invalid default value for ‘sys_create’

ERROR 1067 (42000): Invalid default value for 'created_time'

mysql创建table时出错 ERROR 1067 (42000): Invalid default value for ' '

mysql 导入数据error 1067(42000) Invalid default value for 'update'

数据库升级到mysql5.7出现的1067 - Invalid default value for '字段名' (docker版)

关于mysql数据库中date time的错误问题(Error Code: 1067. Invalid default value for xxx)