解决方案 1:从 MySQL 控制台删除ONLY_FULL_GROUP_BY
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
你可以在这里阅读更多
解决方案 2:从 phpmyadmin 中删除ONLY_FULL_GROUP_BY
为了保持您当前的 mysql 设置并禁用ONLY_FULL_GROUP_BY
我建议访问您的 phpmyadmin 或您正在使用的任何客户端,然后键入:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
下一个结果复制到您的my.ini
文件中。
薄荷: sudo nano /etc/mysql/my.cnf
ubuntu 16 及更高版本: sudo nano /etc/mysql/my.cnf
ubuntu 14-16 : /etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
结果可以包含一个长文本,默认情况下可能会对其进行修剪。确保复制全文!旧答案:
如果要永久禁用错误,则 SELECT 列表的表达式 #N 不在 GROUP BY 子句中,并且包含非聚合列'db.table.COL',该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode = only_full_group_by 不兼容” 执行以下步骤:
sudo nano /etc/mysql/my.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"
sudo service mysql restart
以重启 MySQL
这将对所有用户ONLY_FULL_GROUP_BY
小心使用
SET sql_mode = ''
实际上,这将清除当前启用的所有模式。如果您不想弄乱其他设置,则需要做一个
SELECT @@sql_mode
首先,获取以逗号分隔的启用模式列表,然后将其设置为不带ONLY_FULL_GROUP_BY
选项的列表。