【发布时间】:2016-12-19 22:24:22
【问题描述】:
我正在开发一个在 mysql 5.5 上运行的 laravel 4.2 应用程序。此应用迁移到新服务器,现在运行 mysql 5.7。
升级后,一些查询现在返回空。
我相信这与mysql 5.7引入的sql_mode有关。
查询示例
SELECT * FROM `table1` WHERE `col1` = 'val1' and
(SELECT count(*) FROM `table2`
WHERE `table2`.`table1_id` = `table1`.`id`
and `driver_id` = '39') >= 1 and `table1`.`id` = '86' LIMIT 1
这是 laravel eloquent 产生的查询。它返回空。在旧的 mysql 5.5 上,它按预期返回一行。
如果修复了主查询中的 id,它就可以工作。
... WHERE `table2`.`table1_id` = 86 ...
正如我之前所说,我认为这与 sql_mode 有关。
有什么想法吗?
【问题讨论】:
-
" ` " 在 where 子句中的 table1 之前缺失。
-
抱歉,我在粘贴问题时打错了字。这就是 Laravel Eloquent 重现的 sql。出于隐私考虑,我刚刚更改了表格和列名称。
-
如果我将“count(*)”更改为“count(
table.id)”,它就可以工作。敲钟了吗?
标签: php mysql laravel-4 mysql-5.7 sql-mode