我正在一个共享的主机环境中为一个站点做一些工作,这个环境有翻转设置的历史。本周,一个更新脚本突然停止工作,根本原因是用于返回结果的NOT IN子句不再这样做。
查询的本质是:
SELECT *
FROM db1.entry
where entry_id not in
(
select entry_id from db2.content
)
我可以通过直接检查这两个表来验证是否确实有需要返回的记录。当运行以下两个查询时,第一个查询返回条目ID,第二个查询不返回条目ID:
SELECT *
FROM db1.entry
order by entry_id desc
SELECT *
FROM db2.content
order by entry_id desc
再重复一遍,这一切都正常工作了几个月。没有对代码进行任何更改,但可能一路上MySQL设置发生了更改。在PHP环境中也可能发生了一些变化,但这似乎不太可能,因为当从phpmyadmin运行时,所讨论的查询失败的方式与从活动站点运行时相同。
当然,它在我的开发盒上仍然工作得很好。
Live网站正在运行MySQL4.1.11版。我的问题是,是否有人知道该版本的MySQL设置会改变这些查询中不工作的方式?
谢谢。