我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
如果您正在使用WAMP。左键单击WAMP图标,然后转到MySQL->MySQL设置->sql模式然后选择sql模式->用户模式
其他回答
解决方案1:从mysql控制台中删除ONLY_FUL_GROUP_BY
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
你可以在这里阅读更多
解决方案2:从phpmyadmin中删除ONLY_FUL_GROUP_BY
打开phpmyadmin并选择localhost单击菜单变量并向下滚动以进入sql模式单击编辑按钮更改值并删除ONLY_FUL_GROUP_BY并单击保存。
更新:
要保持当前mysql设置并禁用ONLY_FUL_GROUP_BY,我建议访问phpmyadmin或您正在使用的任何客户端并键入:
SELECT REPLACE(@@sql_mode,'ONLY_FUL_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_SUBSITION”sudo服务mysql重启以重启mysql
这将为所有用户禁用ONLY_FUL_GROUP_BY
感谢@cwhisperer。我在Symfony应用程序中也遇到了同样的问题。我刚刚在config.yml中添加了选项:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
这对我来说很好。
以下是我通过phpmyadmin仪表板更改Mysql配置的解决方案:
为了修复“这与sql_mode=only_full_group_by不兼容”:打开phpmyadmin并转到主页,然后选择“变量”子菜单。向下滚动以查找sql模式。编辑sql模式并删除“ONLY_FUL_GROUP_BY”保存它。
这对我有用:
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));