尽管 sql_mode 为空白,但存储过程引发 "incompatible with sql_mode=only_full_group_by"
Stored procedure raising "incompatible with sql_mode=only_full_group_by" despite sql_mode being blank
我有一个存储过程 运行 在 MySQL 5.6 上运行良好。在最近的服务器迁移过程中,我们升级到 MySQL 5.7.19.
我的存储过程现在抛出错误:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utility-monitor.daily_readings.building_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with 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 5.6 上运行良好。在最近的服务器迁移过程中,我们升级到 MySQL 5.7.19.
我的存储过程现在抛出错误:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utility-monitor.daily_readings.building_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with 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 模式(尽管您可能还有其他不兼容的代码)。