MySQL错误SELECT list is not in GROUP BY clause and contains nonaggregated column解决”

报错截图如下:
image.png

问题就是,一样的项目本地没问题,放服务器上就出错了。数据库版本也一致。

后来参考转载博客,发现解决办法。

解决办法:

用vim打开mysql.cnf文件
sudo vim /etc/mysql/conf.d/mysql.cnf

滚动到文件底部赋值如下内容,然后保存并退出输入模式
[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服务器
sudo service mysql restart

总结:
遇到bug时,千万不要自以为是的去解决,一定要先仔细查看bug是什么,然后去网上找对应的有没有解决办法!

后记
对于MySQL 5.7版本的这个问题的处理,网上还有另外一种办法:

打开navcat,
用sql查询:
select @@global.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

去掉ONLY_FULL_GROUP_BY,重新设置值。

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’;

但亲测该方法并不实用,因为这种修改只是暂时性的,一旦重启服务器就会变回原来的样子,即
select @@global.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

ONLY_FULL_GROUP_BY值仍然存在!

权益
许可协议: CC BY-NC 4.0
版权所有:Copyright 2020 gz.supergz.cn
联系邮箱:gzqq23@163.com
ICP 备案:豫ICP备18024085号-2
统计
文章总数:12
访问人次:688
访问总量:5181
随言碎语:3
//