mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1185 |
+------------------+-------+
1 row in set (0.00 sec)
对于使用XAMPP的用户,C:\ xampp \ mysql \ bin \ my.ini中有2个 max_allowed_packet 参数 .
3
出现此错误基本上有两个原因 .
你的内存太低了 .
尝试连接时,数据库连接已关闭 .
您可以在下面尝试此代码 .
# Simplification to execute an SQL string of getting a data from the database
def get(self, sql_string, sql_vars=(), debug_sql=0):
try:
self.cursor.execute(sql_string, sql_vars)
return self.cursor.fetchall()
except (AttributeError, MySQLdb.OperationalError):
self.__init__()
self.cursor.execute(sql_string, sql_vars)
return self.cursor.fetchall()
24 回答
检查连接是否更容易,并在需要时重新 Build 连接 .
有关信息,请参见PHP:mysqli_ping .
我've encountered this a number of times and I'通常发现答案是max_allowed_packet的默认设置非常低 .
将它在
/etc/my.cnf
(在[mysqld]
之下)提升到8或16M通常会修复它 . (MySql 5.7中的默认值为4194304
,即4MB . )注意:如果该行不存在,只需创建该行
注意:这可以在服务器上运行时设置 .
使用
set global max_allowed_packet=104857600
. 这将其设置为100MB .我有同样的问题,但在
[mysqld]
下的my.ini/my.cnf
文件中更改max_allowed_packet
就成了伎俩 .添加一行
现在
restart the MySQL service
一旦你完成了 .我在MySQL命令行中使用了以下命令来恢复大小超过7GB的MySQL数据库,并且它可以工作 .
错误:2006(CR_SERVER_GONE_ERROR)
通常,您可以重试连接,然后再次执行查询以解决此问题 - 在完全放弃之前尝试3-4次 .
我假设您正在使用PDO . 如果是这样,那么您将捕获PDO异常,递增计数器,然后如果计数器低于阈值则再次尝试 .
如果您有一个导致超时的查询,您可以通过执行以下命令来设置此变量:
其中300是您认为查询可以占用的最长时间的秒数 .
Further information on how to deal with Mysql connection issues.
编辑:您可能还想使用的其他两个设置是
net_write_timeout
和net_read_timeout
.在MAMP(非专业版)中我添加了
到
...\MAMP\bin\startMysql.sh
积分和更多细节here
由于wait_timeout到期,会发生此错误 .
只需转到mysql服务器检查其wait_timeout:
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
我在DigitalOcean Ubuntu服务器上遇到了同样的错误 .
我尝试更改max_allowed_packet和wait_timeout设置,但都没有修复它 .
事实证明我的服务器没有内存 . 我添加了一个1GB swap file,这解决了我的问题 .
用
free -h
检查你的记忆,看看's what'是否导致它 .在Windows上,那些使用xampp的人应该使用这个路径xampp / mysql / bin / my.ini并将max_allowed_packet(在[mysqld]部分下)更改为你选择的大小 . 例如
再次在php.ini(xampp / php / php.ini)上更改upload_max_filesize的选择大小 . 例如
在我发现这个问题之前,让我头疼了一段时间 . 希望能帮助到你 .
这对我来说是RAM问题 .
即使在具有12个CPU内核和32 GB RAM的服务器上,我也遇到了同样的问题 . 我研究了更多,并试图释放RAM . 这是我在Ubuntu 14.04上用来释放RAM的命令:
而且,它修复了一切 . 我把它设置在cron下每小时运行一次 .
并且,您可以使用此命令检查可用的可用RAM量:
而且,你会得到这样的东西:
对于Vagrant Box,请确保为盒子分配足够的内存
在我的例子中,它是
open_files_limit
变量的低值,它阻止了mysqld对数据文件的访问 .我查了一下:
在我将变量更改为大值后,我们的服务器再次活动:
不太可能的情况是客户端和服务器之间有防火墙强制TCP重置为连接 .
我遇到了这个问题,我发现我们的公司F5防火墙配置为终止闲置超过5分钟的非活动会话 .
再次,这是不太可能的情况 .
如果您正在使用64位WAMPSERVER,请搜索 max_allowed_packet 的多次出现,因为WAMP使用[wampmysqld64]下设置的值而不是[mysqldump]下设置的值,这对我来说是问题,我正在更新错误的值 . 将其设置为max_allowed_packet = 64M .
希望这有助于其他Wampserver用户 .
这通常表示 MySQL server 连接问题或超时 . 通常可以通过更改 my.cnf 或类似的 wait_timeout 和 max_allowed_packet 来解决 .
我会建议这些值:
wait_timeout = 28800
max_allowed_packet = 8M
在
my.ini/my.cnf
中取消注释以下的ligne,这会将您的大文件拆分为较小的部分至
我找到了解决方案“#2006 - MySQL服务器已经消失”这个错误 . 解决方案就是你必须检查两个文件
config.inc.php
config.sample.inc.php
Windows中这些文件的路径是
在这两个文件中的值是这样的:
在我的情况下它是:
将其更改为:
确保两者:
config.inc.php
config.sample.inc.php文件必须是'localhost' .
最后一集:
然后重启Wampserver .
更改phpmyadmin用户名和密码
您可以通过config.inc.php文件直接更改phpmyadmin的用户名和密码
这两行
在这里,您可以提供新的用户名和密码 . 更改后保存文件并重新启动WAMP服务器 .
我在Ubuntu桌面上的不同MySQL客户端软件中收到了错误2006消息 . 事实证明我的JDBC驱动程序版本太旧了 .
这可能是您的.sql文件大小的问题 .
如果你使用的是xampp . 转到xampp控制面板 - >单击MySql config - >打开my.ini .
增加数据包大小 .
检查Mysql服务器的日志总是一个好主意,因为它消失了 .
它会告诉你 .
对于使用XAMPP的用户,C:\ xampp \ mysql \ bin \ my.ini中有2个 max_allowed_packet 参数 .
出现此错误基本上有两个原因 .
你的内存太低了 .
尝试连接时,数据库连接已关闭 .
您可以在下面尝试此代码 .
无论背后的原因如何,它都能减轻错误,特别是出于第二个原因 .
如果它是由低RAM引起的,您必须从代码,数据库配置或简单地提高RAM来提高数据库连接效率 .
导致此错误的原因有多种 .
MySQL / MariaDB相关:
wait_timeout
- 服务器在关闭连接之前等待连接变为活动状态的时间(以秒为单位) .interactive_timeout
- 服务器等待交互式连接的时间(以秒为单位) .max_allowed_packet
- 数据包或生成/中间字符串的最大字节数 . 设置与最大BLOB一样大,为1024的倍数 .my.cnf 的示例:
服务器相关:
free -h
查看有关RAM的信息框架相关:
CONN_MAX_AGE
(见docs)如何调试它:
检查MySQL / MariaDB变量的值 .
with sql:
SHOW VARIABLES LIKE '%time%';
命令行:
mysqladmin variables
打开错误的详细程度:
MariaDB:
log_warnings = 4
MySQL:
log_error_verbosity = 3
检查docs for more info about the error
如果您知道自己离线了一段时间,可以关闭连接,进行处理,重新连接并编写报告 .