我正在为一个共享主机环境中的一个网站做了一些工作,这个共享主机环境有一个翻转设置的历史记录。本周,更新脚本突然停止工作,其根本原因是用于返回结果的NOT IN子句不再执行此操作。MySQL“不在”查询突然停止返回结果
查询,在其本质,是这样的:
SELECT *
FROM db1.entry
where entry_id not in
(
select entry_id from db2.content
)
我可以确认,确实有应该由两个表直接检查返回的记录。当运行以下两个查询,第一个返回entry_ids第二不会:
SELECT *
FROM db1.entry
order by entry_id desc
SELECT *
FROM db2.content
order by entry_id desc
并再次重申,这是所有几个月正常工作。没有进行任何代码更改,但可能会改变MySQL设置。在PHP环境中更改某些内容也是可能的,但这似乎不太可能,因为从phpMyAdmin运行时,与从实时站点运行时相同,查询有问题。
而且,当然,它仍然可以在我的开发盒上完美工作。
生活网站运行MySQL版本4.1.11。我的问题是,有没有人知道该版本的MySQL设置会改变这些NOT IN查询的工作方式?
谢谢。
我实际测试同时在子查询无效检查查询,并没有帮助。只有在我回复了你的评论之后,更新了我的问题以包含一个NOT NULL,并重新尝试了它实际上的工作。 看起来这是救援的“老板效应”。直到你展示给老板之前,没有什么能够打破。如果你在互联网上询问它们,破碎的东西会自行修复。 谢谢! – 2009-06-17 13:29:26