MySQL联邦表和一种查询出现错误1159

MySQL联邦表和一种查询出现错误1159,mysql,select,federated,Mysql,Select,Federated,我对MySQL中的联邦表有一个问题。我有一个服务器MySQL版本5.0.51a,用于存储客户机数据,实际上仅此而已。逻辑数据库存储在另一个服务器版本5.1.56中,有时它应该处理来自第一个服务器的数据。因此,第二个服务器有一个联邦表,它连接到第一个服务器 事实上,它工作起来没有任何问题,但最近我在这个解决方案中遇到了奇怪的错误。无法在第二台服务器上正确执行某些类型的查询 例如,从表中选择*不起作用。它正好挂起3分钟,然后给出: 错误代码:1159读取通信数据包时超时 好的,我检查了第一台服务器上

我对MySQL中的联邦表有一个问题。我有一个服务器MySQL版本5.0.51a,用于存储客户机数据,实际上仅此而已。逻辑数据库存储在另一个服务器版本5.1.56中,有时它应该处理来自第一个服务器的数据。因此,第二个服务器有一个联邦表,它连接到第一个服务器

事实上,它工作起来没有任何问题,但最近我在这个解决方案中遇到了奇怪的错误。无法在第二台服务器上正确执行某些类型的查询

例如,从表中选择*不起作用。它正好挂起3分钟,然后给出:

错误代码:1159读取通信数据包时超时

好的,我检查了第一台服务器上的表,一切正常。然后我尝试了其他一些对联邦表的查询,它们可以正常工作

例如,像SELECT*FROM表这样的查询返回结果,其中id=x。可能它在结果的大小上有问题,所以我尝试使用伪WHERE子句进行查询,如SELECT*FROM table WHERE id>0,并且它也可以工作

最后,我找到了一个解决方案,它只起了两天的作用——在第一台服务器上,我复制了一个表,在第二台服务器上,我用新的连接字符串重新声明了一个新的联邦表。这是可行的,但两天后,新复制的表也会出现同样的问题

我已经和这两个服务器提供商谈过了,他们认为没有问题,一切似乎都正常,而其他托管提供商是问题的根源

我已经检查了MySQL中的所有变量,并且没有超时参数,比如3分钟等等。那么我如何处理这样的问题呢?这似乎是网络或数据库方面的自动操作,但我不知道如何检测问题的原因


您有什么想法吗?

您可以尝试检查两台服务器上网络接口的MTU大小设置。

当空闲线程因等待超时而终止时,会记录此警告

通常,避免线程被wait\u超时杀死的方法是在不再需要连接时在脚本中调用mysql\u close。不幸的是,这不适用于通过联邦表进行的查询,因为查询和连接不在同一台服务器上

例如,当在指向服务器B上数据的联邦表的服务器a上执行查询时,它会在服务器B上创建一个连接。然后,当您在服务器a上运行mysql_close时,它显然无法关闭在服务器B上创建的连接


在等待超时中指定的秒数超过默认值8小时后,mysql最终会终止连接。这会在mysqlerror.log读取通信数据包超时时生成警告

我遇到了类似的问题。我知道这是很久以前的事了,但你有没有发现这件事的原因?