我收到MySQL错误
“读取通信数据包时出错”
在MySQL.err文件和我的应用程序端,我收到了2013错误(查询过程中连接丢失)。
所有超时值为(以秒为单位):
wait_timeout = 60
net_read_timeout = 30
connect_timeout = 30
如何解决这个问题?
发布于 2018-02-02 00:00:02
无论如何,这种模糊的错误在许多可能的罪魁祸首中都是很常见的。
通常,系统或调用程序的每个say...but的MySql都不是问题。例如,有时你的php内存限制设置得很低,或者交换驱动器永远不会发生setup...that崩溃,PHP和MySQL会对发生的事情感到困惑。
在我的例子中,我没有这样做,但我正在尝试对一个包含非utf8字符的字符串执行json_encode,这将无声地失败,并将mysql拖到下面。最重要的是,PHP7中的OPCache似乎存在严重的错误,并且缺乏适当的错误日志记录。我不得不禁用它,因为well...then神奇地解决了/var/log/mysql/error.log中所有的“通信数据包”问题。
希望这能帮助someone...gave我更多的悲伤。
发布于 2021-03-29 15:32:09
另一个非常奇怪的情况:检查你的内存和交换!
如果你没有足够的内存和交换空间,你的操作系统可能会决定杀死进程,在MySQL (Got an error reading communication packets
)的情况下导致你的确切错误。在虚拟机中,这是一种常见的情况,提供商通常不会为交换安装任何分区(而且通常人们不会支付足够的RAM)。
因此,请仔细检查top
或htop
,以验证是否有大约100%的内存在使用中,或者是否没有足够的交换空间(或者根本没有交换空间)。
在这种情况下,购买更多的RAM或在您的发行版中搜索“如何安装swapfile”。
如果不是这样,请看其他答案。干杯!:)
发布于 2016-01-27 19:50:16
如果您已经升级了mysql,也许您可以这样做:
mysql_upgrade -u root -p --force
当brew将mysql从5.6.x升级到5.7.x时,这对我有帮助
https://stackoverflow.com/questions/9923203
复制相似问题