欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!
如果你是一个喜欢MySQL和/或MariaDB的用户,你肯定会遇到以下至少一个常见的错误:
- MySQL server has gone away
- Error reading result set’s header
- Error executing query
- MySQL server has gone away for query
- 2006, MySQL server has gone away
- Packets out of order. Expected X received Y. Packet size=Z
…等等。您基本上可以在任何地方找到这些警告,因为它们通常写在尝试连接到数据库并失败的应用程序,工具和服务的日志文件中: 但是,在大多数情况下,热心的系统管理员首先注意到它们检查PHP错误日志文件(或Joomla或WordPress对应文件),同时试图理解为什么他心爱的网站或服务不能正常工作。
也就是说,让我们尝试了解根本原因,看看我们可以做些什么来克服它们。
有许多可能的原因可能导致这些问题:hovewer,因为它们都与连接问题有关,十有八九我们可以通过查看我们的 MySQL 或 MariaDB 配置文件 -my.inifor Windows,my.cnffor Linux – 并调整一些被低估的系统变量,这些变量可能会阻碍我们的服务器在重负载下正常工作。
以下是一些常见清单:
- 确保MySQL服务器实例正常运行,并且发出调用的服务器仍然可以访问该实例:检查端口可用性(3306是默认端口,除非您更改了它),并确保没有防火墙,代理,TCP过滤器,端口扫描程序或任何其他可能影响它的软件。
- 服务器很有可能丢弃了客户端发送的错误或太大的数据包:发生这种情况时,MySQL通常会假设客户端出了问题并关闭了连接。要解决此问题,请检查max_allowed_packet变量值并将其设置为非常高的值(例如max_allowed_packet=2G).根据我们的经验,这是最常见的情况,因此在进行其他任何事情之前尝试此操作可能是明智的。
- 此问题可能是由于服务器超时并关闭了连接。检查wait_timeoutMySQL 变量值并确保它足够大:完成后,还要检查interactive_timeout。请注意,在MySQL 5.7 +中,这两个变量的默认值为28800秒。
- 如果其他任何故障,请尝试将PHP和/或MySQL实例升级到最新版本。
此外,如果您在 PHP 日志中收到数据包顺序错误,则问题很可能是由于您使用的 PHP 和 MySQL 版本之间不兼容。如果升级它们不是一个选项,您可以尝试将以下语句添加到导致问题的 PHP 脚本中:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
欢迎大家来到IT世界,在知识的湖畔探索吧!
这将告诉PDO(又名PHP数据对象)模拟准备好的语句,而不是使用MySQL本机语句。这不是您通常应该做的事情,但是如果您没有使用最新版本的MySQL和PHP,则可能会永久解决您的问题。有关此特定主题的其他信息,请查看此MySQL错误页面。
无论您做什么,如果您更改了my.ini或my.cnf文件中的某些内容,请始终记住重新启动MySQL服务器。
如果这篇文章不足以帮助您,我们强烈建议您查看专用于MySQL服务器已消失错误的MySQL参考手册的官方摘录,您可以在其中找到更多可能的原因和其他可行的解决方法。
原文地址:
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-related-errors/
mysql官方gone-away地址:
https://dev.mysql.com/doc/refman/5.7/en/gone-away.html
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/106653.html