转自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编辑状态
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_DATENO_ZERO_DATE,这两个属性。然后我把这两个属性去掉,再把值给写入到配置文件里面,这时候又出现了新的问题。group by又报错了,这让我很无语,然后我直接把sql_mode的值在配置文件里面至为空,如上图所示

然后保存退出,在重启。然后在导入sql文件就不会报错了。