gpt4 book ai didi

mysql - 尽管 sql_mode 为空,存储过程仍引发 "incompatible with sql_mode=only_full_group_by"

转载 作者:行者123 更新时间:2023-11-29 15:34:45 31 4
gpt4 key购买 nike

我有一个在 MySQL 5.6 上运行良好的存储过程。在最近的服务器迁移过程中,我们升级到 MySQL 5.7.19。

我的存储过程现在抛出错误:

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“utility-monitor.daily_readings.building_id”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容:CALL Monthly_readings(2017, 1, NULL, 1, 1))

我已通过/var/mysql/my.cnf文件将sql_mode设置为"",重新启动mysql服务并通过控制台登录,通过SELECT @@sql_mode;

确认 sql_mode为空

尽管如此,当我尝试运行存储过程时,我仍然收到上述错误。

接下来我可以做什么来继续排除此错误的根源?

最佳答案

根据documentation ,MySQL 使用您创建过程时处于事件状态的 sql 模式:

MySQL stores the sql_mode system variable setting in effect when a routine is created or altered, and always executes the routine with this setting in force, regardless of the current server SQL mode when the routine begins executing.

因此,使用激活的不同模式(或修复 group by 语法)重新创建该过程(或全部过程,因为它可能不是唯一受影响的过程)。尽管文档中提到了,但改变过程是不够的。您应该考虑不要为此永久更改 sql 模式(尽管您可能还有其他不兼容的代码)。

关于mysql - 尽管 sql_mode 为空,存储过程仍引发 "incompatible with sql_mode=only_full_group_by",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360796/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com