navicat-mysql数据库传输遇到Invalid default value for 'tmptime' 报错的解决方法
(2018-03-26 23:07:11)
标签:
mysqlvaluefor'tmptime' |
分类: 网络技术 |
由于用centos新建了一台独立的mysql数据库服务器,需要将原来与脚本安装在同一台服务器的数据库迁移到新数据库服务器上,用navicat的数据传输功能来传,遇到报错信息:Invalid
default value for 'tmptime'
原服务器数据库 mysql 5.5
新数据库服务器 mysql 5.7
查资料报错原因是,mysql 5.7有更严格的数据校验,MySQL
5.6以后timestamp设定默认值规则改变,时间字段不允许再设置”0000
00-00 00:00:00”这样的默认值。
解决方法:
查看sql_mode:
mysql> show session variables like '%sql_mode%';
| Variable_name | Value
-----------------------------------------------------+
| sql_mode
|
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
+---------------+--------------------------------------------------------------------------------------
修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
查看sql_mode:
mysql> show session variables like '%sql_mode%';
| Variable_name | Value
-----------------------------------------------------+
| sql_mode
+---------------+--------------------------------------------------------------------------------------
修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
mysql> set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
然后重新做数据传输就OK咯!