Mysql5.6版本导出sql文件数据导入到5.7版本出现的问题解决方法
转自Mysql5.6版本导出sql文件数据导入到5.7版本出现的问题解决方法
客户又又又买了一台新的服务器,这次是个裸机,需要自己装一些软件。
根据网上搜到的教程,安装了mysql-community-server 5.7版本的,想着也应该换个新的版本了。
然而,新版本总会有些问题,一些不兼容,或者优化的地方,需要配置。
这不,我这边兴冲冲地建了个远程连接账号,用navicat把数据库从之前的服务器导出来,再导入新的服务器上时,就挂了。
之前有过这种导入失败的情况,一般都是数据量较大,并且有些数据格式不太规范的原因。这次考虑到新的因素:新版本mysql,并且同事也反应说新版本的分页查询有点问题,就去网上搜了一下,果然如此:
解决方案:
1.找到mysql的配置文件,配置文件在、/etc/mysql/mysql.conf.d/mysqld.cnf(我用yum安装的,配置文件为/etc/my.cnf
)
2.编辑mysqld.cnf 文件,在[mysqld] 下面加上sql_mode= ,如图所示
在这里我需要解释下,因为我查询过sql_mode值 ,语句为selete @@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
而报时间默认值不能为0的罪魁祸首则是NO_ZERO_IN_DATE
、NO_ZERO_DATE
,这两个属性。然后我把这两个属性去掉,再把值给写入到配置文件里面,这时候又出现了新的问题。group by
又报错了,这让我很无语,然后我直接把sql_mode的值在配置文件里面至为空,如上图所示
然后保存退出,在重启。然后在导入sql文件就不会报错了。