无法禁用ONLY_FULL_GROUP_BY

时间:2017-12-03 22:12:26

标签: php mysql magento stored-procedures

我在MySQL 5.7.14上遇到了ONLY_FULL_GROUP_BY的问题,即使我已经设置了SQL模式,我也似乎无法禁用它。

我已经设置了@@ sql_mode以通过运行此命令来删除ONLY_FULL_GROUP_BY:SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));并且我还更新了my.cnf文件以通过设置sql-mode参数来排除它。

如果我运行select @@sql_mode,我可以看到ONLY_FULL_GROUP_BY不再设置。

然而,当我运行我的存储过程时,我仍然收到此错误:

1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'product_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

我在这里缺少什么? SP是否忽略sql-mode?

我不想修改SP代码,因为它是从第三方模块(对于Magento)安装的,如果我们想升级会导致问题。

这是我本地开发人员的WAMP。

2 个答案:

答案 0 :(得分:3)

对于遇到同样问题的任何人,事实证明sql模式与存储过程一起存储,所以即使我已经正确地更改了sql模式,它也根本不更新SP。为了解决这个问题,我刚刚删除并重新创建了存储过程,同时设置了新的sql模式。它现在工作正常!

答案 1 :(得分:1)

要修复此问题并重新创建存储过程 它正在工作。

使用your_schema_name; 如果存在your_sp_name,则执行DROP程序;

DELIMITER $$ 使用your_schema_name $$ 创建过程your_sp_name(在your_input VARCHAR(50)中) 开始

-这里是sp数据

END $$

DELIMITER;