如何解决MySql报错:only_full_groupBy
原因
mysql5.7之后默认会添加only_fulll_groupBy的规则(mysql的sqlMode),简单点说就是,会报这个错误的原因就是新版的mysql认为你的sql查询在mysql看来不符合规范,性能不好。最好的解决办法就是更换sql语句,但是如果实在换不了的话就看以下的解决办法。
解决办法
一、如果所查询的数据库在sqlMode改变之后创建的话,分别执行这3个mysql的命令:
SELECT @@GLOBAL.sql_mode;
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 ';
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 ';
二、如果所查询的数据库是在sqlMode改变之前就已经存在的话,还需执行:
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 ';
总结:以上就是解决only_full_groupBy的错误,分不清状况的朋友可以把以上的4个sql语句都执行一遍。以后遇到这种情况,第一建议就是优化自己的sql语句,第二才是以上面的方式解决(。(如果已启动的项目需要重启,否则虽然mysql数据库不会报错,但是项目还是会报错)。