制作天下网站,大庆市城乡建设局网站首页,乔拓云网站建设,企业网站开发计划比较老的系统生成的数据库导入5.7时报错[Err] 1067 - Invalid default value for create_time
错误分析
表中的第一个TIMESTAMP列#xff08;如果未声明为NULL或显示DEFAULT或ON UPDATE子句#xff09;将自动分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属…比较老的系统生成的数据库导入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_modeONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION完事记得删除已经已经创建的数据库在重启服务。