我正在为共享主机环境中的某个站点做一些工作,该环境有翻转我们设置的历史记录.本周,更新脚本突然停止工作,其根本原因是用于返回结果的NOT IN子句不再这样做.
查询的本质是:
SELECT *
FROM db1.entry
where entry_id not in
(
select entry_id from db2.content
)
Run Code Online (Sandbox Code Playgroud)
我可以通过直接检查这两个表来验证是否确实存在应该返回的记录.运行以下两个查询时,第一个返回entry_ids,第二个不返回:
SELECT *
FROM db1.entry
order by entry_id desc
SELECT *
FROM db2.content
order by entry_id desc
Run Code Online (Sandbox Code Playgroud)
为了重新进行迭代,这几个月都正常工作.没有进行任何代码更改,但可能会在此过程中更改MySQL设置.PHP环境中也可能发生了某些变化,但这似乎不太可能,因为当从phpMyAdmin运行时,有问题的查询以与从实时站点运行时相同的方式失败.
当然,它仍然可以在我的开发盒上完美运行.
实时站点运行MySQL 4.1.11版.我的问题是,是否有人知道该版本的MySQL设置会改变这些NOT IN查询的工作方式?
谢谢.