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

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

时间: 2024-10-10 16:37:16

Mysql 报错:#1067 - Invalid default value for 'update_time的相关文章

【错误】mysql 出现 "1067 - Invalid default value for 'UPDATE_TIME' " 错误提示的解决办法

今天工作中遇到修改表结构的时候出现错误 Invalid default value for 'UPDATE_TIME 问题原因是因为db 表中update_time的默认时间写成了 '0000-00-00 00:00:00' `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 因为timestamp类型取值范围:1970-01-01 0

mysql导入文件报错:[Err] 1067 - Invalid default value for 'active_time'

报错原因意思是说:mysql5.7版本中有了一个STRICT mode(严格模式),而在此模式下默认是不允许设置日期的值为全0值的,所以想要  解决这个问题,就需要修改sql_mode的值. 修改全局设置 mysql> set @@global.sql_mode=(select replace(@@global.sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); mysql> select @@global.sql_mode; mysql导入文件报错:[

MySQL在windows系统中修改datadir路径后无法启动问题,报错1067

windows server2008下如何更改MySQL数据库的目录的帖子已经很多了,这里简单介绍一个步骤,如果不成功请先查看其它帖子. 更改默认的mysql数据库目录 将 C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data 改到 D:\MysqlData 1. 建立文件夹 D:\MysqlData 2. 停止 mysql 服务,将 "C:\Documents and Settings\

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

在新建表的时候突然出现一个错误信息: Error Code: 1067. Invalid default value for 'start_time' 在经过一番折腾之后发现是datetime不能设置默认值,所以想要设置默认值的话我们也可以使用timestamp然后设置默认值为current_timestamp即可 不过除了在数据库中设置默认值外我们也可以在程序进行设置,如果是5.6的mysql数据库应该不存在不能设置默认值的问题

Mysql报错 Cannot load from mysql.proc

Auth: Jin Date: 20140716 mysql --default-character-set utf8 -h127.0.0.1 -uroot -p < account-20140716-1.sql ERROR 1548 (HY000) at line 57: Cannot load from mysql.proc. The table is probably corruptedmysql> SHOW PROCEDURE status; ERROR 1548 (HY000): C

mysql 报错之创建自定义函数

I experienced this error while trying to alter one of my stored procedures remotely on a master server. After some research, I ended up getting information from “Binary Logging of Stored Programs“. From MySQL Reference in verbatim:When you create a s

SQLYog执行SQL脚本提示:错误代码: 1067 - Invalid default value for &#39;数据库表&#39;查询:解决办法

强烈建议:完全卸载当前版本MySQL,重新安装5.6及以上版本 完全卸载方法:https://jingyan.baidu.com/article/3d69c551611290f0ce02d77b.html 卸载完之后记得删除C:\ProgramData下的隐藏文件MySQL 这是我在网上查阅多方资料,尝试无数次,踩了很多坑之后得到的最优解决办法! 至于网上修改sql_mode之类的办法,亲测无效,可能和我代码有关,不做赘述! 出现该错误原因:MySQL版本不同,导致5.6版本之前和之后的语法有很

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

docker run -d --name xxx --network lnmp7 -p 3306:3306 -v /data/xxx/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=oneone mysql:5.7 docker container cp xxx:/etc/mysql/mysql.conf.d .   // 取出mysql中的配置文件 docker stop xxx docker rm -f xxx //删除实例 mv mysql.conf.

mysql报错问题解决Character set &#39;utf8mb4&#39; is not a compiled character set

mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file 报错的解决方法 1.由于日常程序使用了字符集utf8mb4,为了避免每次更新时,set names utf8mb4,就把配置文件改了,如下: 增加了mysql客户端的默认字符集设置 [[email protected]~]# vim