mysql5.7 1067 - Invalid default value for ‘UPDATE_TIME‘和timestamp默认值‘0000-00-00 00:00:00’报错

数据库:MYSQL

Navicat 12

出错信息

运行sql脚本时报错
[Err] 1067 - Invalid default value for 'UPDATE_TIME'

[Err] CREATE TABLE `V_TBL_AMOUNT_REASON` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `AMOUNT_CODE` varchar(10) NOT NULL,
    `AMOUNT_VALUE` varchar(255) NOT NULL,
    `UPDATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`ID`)
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

这个问题和mysql中sql_mode有关系,我们可以采用两种方法来查看它的值
方法一:
SHOW VARIABLES LIKE 'sql_mode%';
查询得到入下信息

方法二:
SELECT @@sql_mode;

解决办法
修改mysql配置文件(修改完重启服务)
win下修改my.ini

 

sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

linux
用find / -name my.cnf查找my.cnf位置
在用vim /etc/my.cnf在my.cnf[mysqld]下添加

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  


保存完成之后kill掉当前mysqld运行进程,执行systemctl start mysqld重新启动mysql

Mac系统下:
在MacOS中默认是没有my.cnf 文件,如果需要对MySql 进行定制,拷贝/usr/local/mysql/support-files/目录  
中任意一个.cnf 文件。笔者拷贝的是my-default.cnf,将它放到其他目录,按照上面修改完毕之后,更名为  
my.cnf,然后拷贝到/etc目录再重启下mysql就大功告成了。
 
notice:
或者将SQL中的“timestamp NOT NULL DEFAULT '0000-00-00 00:00:00”都改为“timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”,再次执行SQL即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值