我在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? p>
我不想修改SP代码,因为它是从第三方模块(对于Magento)安装的,如果我们想升级会导致问题。
这是我本地开发人员的WAMP。
答案 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;