我有一个在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))
我已经设置了sql_mode
对""
通过/var/mysql/my.cnf
文件,重新启动mysql服务,并通过控制台,以确认登录的sql_mode
通过是空白SELECT @@sql_mode;
尽管如此,当我尝试运行存储过程时,我仍然收到上述错误。
接下来,我该怎么办才能继续排除错误的出处?
根据文档,MySQL使用创建该过程时处于活动状态的sql模式:
创建或更改例程时,MySQL将存储有效的sql_mode系统变量设置,并且始终在执行该设置的情况下执行该例程,而与例程开始执行时当前的服务器SQL模式无关。
因此,在激活另一种模式(或修复group by
语法)的情况下,重新创建该过程(或所有过程,因为它可能不是唯一受影响的过程)。尽管在文档中提到了 更改
过程,但这还不够。您应该考虑不要为此永久更改sql模式(尽管您可能还会有其他不兼容的代码)。
查询: 有人有解决办法吗?
问题内容: 我一直在切换到拉曼SQL棒球数据库的脱机版本时遇到问题。我正在使用嵌入到EDX课程中的终端。此命令在Web终端上运行良好: 它正在运行SQL 5.5.46,但是当我使用运行5.7.10的脱机版本时,出现以下错误代码: 错误代码:1055。SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’stats.m.nameFirst’,该列在功能上不依赖于GROUP BY
下面的CodeIgniter查询给出了一个错误提示; SELECT列表的表达式#22不在GROUP BY子句中,并且包含非聚合列'HW3.1.HW_COMABETY.ID',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by不兼容
SQL在sql_mode=ONLY_FULL_GROUP_BY中遇到了一些问题,如何重写这个SQL?
你能告诉我最好的解决办法... 我需要像这样的结果
问题内容: 我在装有WAMP Server的Windows PC上使用MySQL 5.7.13运行 这是我的问题是执行此查询时 总是会出现这样的错误 SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’returntr_prod.tbl_customer_pod_uploads.id’,该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_fu