php - mysql 从 5.5 升级到 5.7 后的空查询

标签 php mysql laravel-4 mysql-5.7 sql-mode

我正在开发一个在 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 有关。

有什么想法吗?

最佳答案

查询没有任何问题,您确实可以更改查询来避免问题,但这并不能解决真正的问题。

解决方案是在optimizer_switch 配置中禁用index_merge_intersection

这是在 mysql 5.7 上发现的一个错误 https://bugs.mysql.com/bug.php?id=79675

它对我有用。

关于php - mysql 从 5.5 升级到 5.7 后的空查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189285/

相关文章:

javascript - 正则表达式:匹配内容类型 http header 中的 javascript mime 类型

javascript - "$.get"用于检索信息

php - 关于 php 中的进度条

php - 存储上传的用户图片

laravel-4 - 使用 Laravel 4.2 从数据库记录 DomPDF

Laravel 4 Blade 模板导致 FatalErrorException?

php - 合并 mysql 中的列条目

mysql - 优化/改进缓慢的 mysql 查询 - 索引?重组?

mysql - 具有 Facebook 类群组的系统的数据库设计

php - 更新时格式化的日期时间提交为无效