php - MySQL 升级导致简单 WHERE 子句出现意外结果
问题描述
我正在升级我的 Laravel 应用程序以使用 MySQL 8.0.23 从 8.0.20 并且我看到一些WHERE
子句产生意外结果的问题。
select * from `servers` where `platform_id` = 1 and `platform_server_id` = 407254666900930563
直接在 MySQL 服务器上运行 ^ 会产生我正在寻找的记录,但是通过 Laravel 雄辩的查询构建器使用它却找不到记录。这是雄辩的代码:
Server::where('platform_id', 1) // removing this condition pulls the correct record
->where('platform_server_id', "407254666900930563")
->first()
我已经在platform_id
确实 = 1 的数据库中进行了验证(通过直接运行 SQL 进行验证)。
这是我在 Laravel 端的 MySQL 配置...
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
'modes' => [
/**
* Disabled because of a group by we need
*/
//'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
]
我查看了 MySQL 更改日志,但没有看到可能导致这种情况的原因。任何人有任何想法我应该调查什么?
解决方案
推荐阅读
- php - 数据不通过管理页面中的 ajax 和 jQuery 插入和更新?
- unicode - 如何使用 Arduino IDE 在 Adafruit SSD1306 上显示 Unicode 字符?
- microsoft-graph-api - 从 Exchange 网络服务迁移到 Graph Api
- heroku - 将信用卡添加到 Heroku
- javascript - 如何消除 React js 应用程序中的渲染阻塞资源?
- selenium - 具有多个空格的 Selenium 文本检索
- python - 如何使用 VScode 获取特定 Python 模块方法的内部源代码?
- c - 为什么 -1L < 1UL 在 C 中为真?
- javascript - 如何从 Firestore 文档中获取嵌套的参考数据?
- hadoop - 使用 pyspark 3.0.1 和 hadoop 3.2 构建 docker 映像