升级WAMP SERVER后,MySql重新抛出错误

时间:2017-09-20 19:23:28

标签: php mysql

SELECT * FROM (SELECT * FROM notifications WHERE popped = '0' ORDER BY id DESC) t WHERE t.userTo = '".$myId."' GROUP BY t.noteId, t.dataId, t.type

上面的代码在我的Wamp服务器上完美运行,该服务器运行在MYSQL5.5.8上。然后我升级到最新的Wamp v3.0.6,它运行在MYSQL5.7.14上,我开始得到#1055错误。

最后,我在SQL Query

下面的图片中提出了这段代码

但我收到此错误Error thrown back

我已尽力尝试但无法修复此错误。有人可以帮我解决这个问题吗?

我真的需要子查询

1 个答案:

答案 0 :(得分:0)

这是一个解决方法,使MySQL 5.7的行为与GROUP BY查询的先前版本相同 - 这不应该是接受的答案

首先,找出您当前的sql_mode

SELECT @@sql_mode;

在我的测试服务器上,这返回了:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

您看到的错误是由ONLY_FULL_GROUP_BY标志引起的。您可以更新MySQL配置文件以删除该标志。查找并编辑您的my.cnf文件(IIRC,您可以从任务栏图标中的WAMP菜单访问它,但是我上次使用WAMP已经过了几年,因此可能已经更改了。)

检查那里是否已定义sql_mode。如果没有,请将其添加到[mysqld]标题下的某个位置。使其值与上一个查询中的sql_mode相同,减去 ONLY_FULL_GROUP_BY标志。所以在我的情况下,那将是:

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

保存文件并重新启动MySQL以加载更改。

请注意,下次更新WAMP时,很可能会覆盖对my.cnf文件所做的更改,因此这不是永久解决方案。要进行永久性修复,您应该将查询更新为与默认sql_mode兼容。