gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:58:01 26 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 服务并通过控制台登录以确认 sql_mode 通过 SELECT @@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/45560680/

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