本文主要是介绍navicat导入.sql文件出现:[ERR] 1067 - Invalid default value for ‘create_date‘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
比较老的系统生成的数据库导入5.7时报错[Err] 1067 - Invalid default value for 'create_time'
错误分析
表中的第一个TIMESTAMP
列(如果未声明为NULL
或显示DEFAULT
或ON UPDATE
子句)将自动分配DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
属性
第一个之后的TIMESTAMP
列(如果未声明为NULL
或显示DEFAULT
子句)将自动分配DEFAULT '0000-00-00 00:00:00'
(零时间戳),这不满足sql_mode
中的NO_ZERO_DATE
而报错。
注:sql_mode
有两种,一种是空值,一种是严格模式,会给出很多默认设置。在MySQL5.7
之后默认使用严格模式。
NO_ZERO_DATE
:若设置该值,MySQL
数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
解决方式
方式一:先执行select @@sql_mode
,复制查询出来的值并将其中的NO_ZERO_DATE
删除,然后执行set sql_mode = '修改后的值'
。
此方法只在当前会话中生效
方式二:先执行select @@global.sql_mode
,复制查询出来的值并将其中的NO_ZERO_DATE
删除,然后执行set global sql_mode = '修改后的值'
。
此方法在当前服务中生效,重新MySQL
服务后失效
方式三:永久修改,编辑mysql
的配配置文件my.cnf
,在[mysqld]
下面添加如下列:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
完事记得删除已经已经创建的数据库,在重启服务。
这篇关于navicat导入.sql文件出现:[ERR] 1067 - Invalid default value for ‘create_date‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!