码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-05-12 10:57:52      阅读:1089      评论:0      收藏:0      [点我收藏+]

标签:The   名称   默认值   转换   情况   自动   str   mys   对象   

由于 字段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

标签:The   名称   默认值   转换   情况   自动   str   mys   对象   

原文地址:https://www.cnblogs.com/feiquan/p/10851117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!