私はmysql 5.5で動作していたlaravel 4.2アプリケーションを開発中です。このアプリは新しいサーバーに移行され、現在はmysql 5.7を実行しています。mysql 5.5から5.7へのアップグレード後の空のクエリ
アップグレード後、一部のクエリが空に戻っています。
私はこれをsql_mode mysql 5.7とは何かと考えています。
例のクエリは
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では、期待通りに1行を返します。
メインクエリからIDを修正した場合、それは機能します。
... WHERE `table2`.`table1_id` = 86 ...
私が前に言ったように、これはsql_modeと関係していると思います。
どのような考えですか?それをサポートするほとんどのデータベースで
where節のtable1の前に '' "がありません。 –
申し訳ありませんが、私は質問を貼り付けたときにタイプミスでした。それがSQLラーベルのEloquentが再現したものです。私はプライバシーのために表と列の名前を変更しました。 – cmancre
"count(*)"を "count(' table'.'id')に変更すると動作します。ベルを鳴らす? – cmancre