在MySQL中读取通信包时出错

时间:2012-03-29 10:05:56

标签: mysql

我收到MySQL错误

  

“读取通信包时出错”

在MySQL.err文件中,在我的应用程序端,我收到2013错误(查询期间连接丢失)。

所有超时值均为(以秒为单位):

wait_timeout = 60
net_read_timeout = 30
connect_timeout = 30

如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

对于这是值得的,这个模糊的错误在很多可能的罪魁祸首中都很常见。

通常情况下,MySql不是问题......而是系统或调用程序。例如,有时你将php内存限制设置为低或交换驱动器从未设置...崩溃PHP和MySQL对发生的事情感到困惑。

在我的情况下,我没有那个,但是我试图在非utf8字符的字符串上做一个json_encode,它会无声地失败并用它拖动mysql。在PHP7中的这个OPCache之上似乎是严重错误并缺乏正确的错误记录。我不得不禁用它...然后神奇地我在/var/log/mysql/error.log中的“通信包”的所有问题都消失了。

希望这有助于某人......给了我很多悲伤。

答案 1 :(得分:0)

另一个非常奇怪的极端情况:检查您的 RAM 和交换!

如果您没有足够的 RAM 和交换空间,您的操作系统可能会决定终止导致您在 MySQL (Got an error reading communication packets) 中出现确切错误的进程。这是虚拟机中的一种常见情况,提供者通常不会为交换安装任何分区(并且人们通常没有支付足够的 RAM)。

因此,请仔细检查 tophtop 以验证您的 RAM 是否有大约 100% 正在使用,或者您是否没有足够的交换空间(或根本没有交换空间)。< /p>

在这种情况下,购买更多 RAM 或在您的发行版中搜索“如何安装交换文件”。

如果不是这样,请参阅其他答案。干杯! :)

答案 2 :(得分:-1)

你能改变bind-address = localhost并重启MySQL服务器吗?似乎此问题与您的问题有关:http://forums.mysql.com/read.php?152,355740,355742#msg-355742

也是这个 -

  

如果MySQL端口错误导致MySQL客户端错误2013“丢失   连接...“。请注意,如果端口转发,也会发生此错误   在SSH配置中禁用(配置参数   'sshd_config'文件中的'AllowTcpForwarding'设置为'no'。它   (这里)只是告诉我没有从SSH到MySQL的连接   某些原因。但mySQL客户端API'认为'有一个   连接,这就是为什么说'丢失连接......'而不是   '无法连接......'。有一个成功的联系 - 但不是   MySQL服务器 - 仅限SSH守护进程!但MySQL客户端API是   不是为了“看到”差异而设计的!

参考this

答案 3 :(得分:-1)

如果您升级了mysql,也许可以这样做:

mysql_upgrade -u root -p --force

这有助于我将brew从5.6.x升级到5.7.x