我收到MySQL错误
“读取通信包时出错”
在MySQL.err文件中,在我的应用程序端,我收到2013错误(查询期间连接丢失)。
所有超时值均为(以秒为单位):
wait_timeout = 60
net_read_timeout = 30
connect_timeout = 30
如何解决这个问题?
答案 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)。
因此,请仔细检查 top
或 htop
以验证您的 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