问题:
MySQL数据库迁移到MySQL5.7版本后,出现如下报错:
原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。
解决办法:
1、打开MySQL数据库控制台
执行全局sql语句:
set @@sql_mode=
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
或者
SET GLOBAL sql_mode=
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
如果只修改某一个数据库,请在该数据库下面执行:
sql_mode=
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
2、修改MySQL配置文件
Linux下my.cnf或Windows下My.ini
注意在[mysqld]段下添加,直接加到最后一行无效。
添加以下代码:
sql_mode=
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
添加完成后,重新启动MySQL服务,MySQL报错消失。
至此,MySQL5.7版本sql_mode=only_full_group_by问题解决。