热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql5.7timestamp默认值‘0000000000:00:00’报错

 mysql5.7运行sql脚本时报错1[Err]1067-Invaliddefaultvaluefor'UPDATE_TIME'2[Err]CREATETAB


 

mysql5.7

运行sql脚本时报错


1 [Err] 1067 - Invalid default value for 'UPDATE_TIME'
2 [Err] CREATE TABLE `V_TBL_AMOUNT_REASON` (
3 `ID` int(11) NOT NULL AUTO_INCREMENT,
4 `AMOUNT_CODE` varchar(10) NOT NULL,
5 `AMOUNT_VALUE` varchar(255) NOT NULL,
6 `UPDATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
7 PRIMARY KEY (`ID`)
8 ) 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

在my.cnf[mysqld]下添加


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

 

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即可

 

 

 

 



推荐阅读
author-avatar
IKUN
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有