SQL搜索查询在不同的服务器上处理不同

时间:2014-08-26 17:28:09

标签: php mysql sql left-join lamp

我有一个非常奇怪的问题,我现在几天都无法弄清楚。我已经做了很多测试,现在已经排除了很多可能的根本原因,这为真正“异国情调”的可能性留下了空间,我需要一些新想法的帮助,因为我现在被困住了。

一些背景知识:网站源文件和数据库(两者都相同)安装在两个服务器Wamp和Lamp上。

我面临的问题是与搜索结果相关的网站查询。搜索查询是使用LEFT JOIN从两个SQL DB表构建的。连接由条目ID参数完成。 这是其中一个搜索查询的示例:

$tables = $tblprefix."vehicles AS v
        LEFT JOIN ".$tblprefix."vehicles_car AS vc on v.id = vc.v_id LEFT JOIN ".$tblprefix."models AS model on v.model = model.id";         
} 
else { 
$fields = " v.*, vc.exterior_color";

搜索查询本身是正确的,并且在两台服务器上都能正常运行,所以这只是一个例子。

不同的场景 - 从CSV文件中我上传名为“vehicles”的主数据库表的条目。在上传之后,执行搜索,结果显示所有上传的条目,即所有工作正确。我已经厌倦了添加超过27,000行并且所有显示都没有出现故障。 然后我继续上传第二个表“vehicles_car”的条目。当有大约200-215个条目插入时,所有工作都是正确的。

现在问题 - 当我在第二个表中插入超过210-220个条目时,搜索查询突然显示“无结果”,但仅针对安装在Lamp服务器上的网站。 无论在两个表中加载了多少条目,Wamp上的网站都可以工作。出于某种原因,只有Lamp服务器上的查询不起作用,并且仅当第二个表具有超过200个条目时。

注意:显示“无结果”时表条目的数量有所不同 - 它适用于215个条目,然后我再插入一个 - 显示“无结果”,然后我删除最后一个条目并继续显示“没有结果”。再删除一个 - “无结果”,继续从第二个表中删除更多条目,它会再次突然显示正确的搜索结果。真的不一致的行为。

最奇怪的是,当查询显示“无结果”并将数据库导入Wamp服务器时,我从Lamp服务器导出了整个数据库。它在那里工作!!!

所以任何想法 - 可能是什么问题(我怀疑它是数据库中的某些东西)可能导致查询在一台服务器上工作而在另一台服务器上不起作用(并且只有当存在超过一定数量的行时)在第二个联合表中)??

Lamp Server - SQL 5.5.32 InnoDB,phpMyAdmin - 2.8.0.1

Wamp Server - SQL 5.6.14 InnoDB,phpMyAdmin - 4.0.9

任何新鲜的想法都会受到赞赏,因为我真的被困了!!!

谢谢!

UPDATE:我只清空了所有带有特殊字符的列,并将它们替换为两个表的第一行的单元格值(仅限可能 - 例如ID自动增量单元格未更改)。 在Lamp服务器上观察到相同的行为,区别在于现在SQL查询在第二个表中添加的不同行数上显示“无结果”。首先尝试添加2037行 - “无结果”。删除了最后一行 - “没有结果”,删除了一行,全部罚款(2035行)。再次添加同一行(2036),罚款,添加新行(2037) - 一切都很好。继续用INSERT查询逐行添加行,一切都很好,现在在第2039行,搜索结果正常。这种不一致的行为可以从何而来?由于这是共享托管环境,LAMP服务器可以处理Left Join的查询数量的任何“变量”限制?还有什么呢?

UPDATE2:我现在倾向于认为这与托管服务提供商服务有关,而不是查询或数据库本身。继续调查。

1 个答案:

答案 0 :(得分:0)

好的,所以花了两周的时间研究SQL查询并推动托管支持以调查他们这边的问题,结果发现max_join_size的限制设置为7,000,000,最终只返回大约2000多条记录。如果记录超过此限制,则服务器不会返回任何结果。好的。

事实证明曾经曾经是一个伟大的托管服务现在正成为 * 的真正痛苦。