我正在使用運行在mysql 5.5上的laravel 4.2應用程序。這個應用程序遷移到一個新的服務器,現在運行一個MySQL 5.7。將MySQL從5.5升級到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口才產生一個查詢。它返回空。在舊的MySQL 5.5中,它按預期返回一行。
如果修復了主查詢中的id,它就起作用了。
... WHERE `table2`.`table1_id` = 86 ...
正如我之前所說,我認爲這是與sql_mode有關。
有什麼想法?
「'」在where子句中的table1之前缺少。 –
對不起,當我貼上問題時,這是一個錯字。這就是Laravel雄辯的重現。我只是改變了表和名字的隱私。 – cmancre
如果我將「count(*)」更改爲「count('table'.'id')」,它就會起作用。搖鈴? – cmancre