MySQL错误2006:MySQL服务器已经消失
我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器 文件处理需要一些时间,并且进程中途终止,出现以下错误:MySQL错误2006:MySQL服务器已经消失,mysql,mysql-error-2006,Mysql,Mysql Error 2006,我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器 文件处理需要一些时间,并且进程中途终止,出现以下错误: 2006, MySQL server has gone away 我听说过MySQL设置,等待超时,但我需要在办公室的服务器或远程MySQL服务器上更改此设置吗?如果需要,可以更轻松地检查连接并重新建立连接 请参阅以获取相关信息。错误:2006() 消息:MySQL服务器已经消失 通常,您可以重试连接,然后再次执行查询以解决此问题-在完全放弃之前尝试3-4次 我
2006, MySQL server has gone away
我听说过MySQL设置,等待超时,但我需要在办公室的服务器或远程MySQL服务器上更改此设置吗?如果需要,可以更轻松地检查连接并重新建立连接 请参阅以获取相关信息。错误:2006() 消息:MySQL服务器已经消失 通常,您可以重试连接,然后再次执行查询以解决此问题-在完全放弃之前尝试3-4次 我假设您正在使用PDO。如果是这样,那么您将捕获PDO异常,增加一个计数器,然后在计数器低于阈值时重试 如果有导致超时的查询,可以通过执行以下命令设置此变量:
SET @@GLOBAL.wait_timeout=300;
SET @@LOCAL.wait_timeout=300; -- OR current session only
其中300是您认为查询可能花费的最长时间的秒数
编辑:您可能还想使用的另外两个设置是
net\u write\u timeout
和net\u read\u timeout
如果您知道要脱机一段时间,您可以关闭连接,进行处理,重新连接并编写报告 我已经多次遇到这个问题,我通常发现答案是非常低的默认设置
在/etc/my.cnf
(在[mysqld]
下)中将其提高到8或16M通常可以修复它。(MySql 5.7中的默认值为4194304
,即4MB。)
注意:如果该行不存在,只需创建该行即可 注意:这可以在服务器运行时设置 使用
设置全局最大允许数据包=104857600
。这将其设置为100MB。在我添加的MAMP(非专业版)中
到…\MAMP\bin\startMysql.sh
积分和更多细节我也有同样的问题,但在
[mysqld]
下的my.ini/my.cnf
文件中更改max\u allowed\u数据包
成功了
加行
允许的最大数据包长度=500米
现在
完成后重新启动MySQL服务
此错误是由于等待超时过期而发生的
只需转到mysql服务器检查其等待超时:
mysql>显示变量,如“等待超时”
mysql>设置全局等待超时=600#10分钟或最大等待时间
你需要什么
在您的
my.ini/my.cnf
中取消对下面的对齐的注释,这将把您的大文件分割成更小的部分
# binary logging format - mixed recommended
# binlog_format=mixed
到
在windows上,那些使用xampp的人应该使用这个路径xampp/mysql/bin/my.ini,并将max_allowed_packet(在[mysqld]部分下)更改为您选择的大小。 e、 g 再次在php.ini(xampp/php/php.ini)上更改upload\u max\u filesize选项大小。 e、 g
让我头痛了一段时间直到我发现了这个。希望有帮助。对于“流浪者”框,请确保为该框分配足够的内存
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
我在MySQL命令行中使用了以下命令来恢复一个大小超过7GB的MySQL数据库,它可以正常工作
set global max_allowed_packet=268435456;
在我的例子中,是
open\u files\u limit
变量的低值阻止了mysqld对数据文件的访问
我查了一下:
mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1185 |
+------------------+-------+
1 row in set (0.00 sec)
在我将变量更改为大值后,我们的服务器再次处于活动状态:
[mysqld]
open_files_limit = 100000
我在我的DigitalOcean Ubuntu服务器上遇到了同样的错误 我尝试更改max_allowed_数据包和wait_timeout设置,但他们都没有修复它 结果是我的服务器内存不足。我添加了一个,解决了我的问题
用
free-h
检查你的内存,看看这是否是导致它的原因。对我来说,这是内存问题
即使在一台有12个CPU内核和32 GB RAM的服务器上,我也遇到了同样的问题。我做了更多的研究,试图释放内存。以下是我在Ubuntu 14.04上用来释放RAM的命令:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
而且,它修复了一切。我已将它设置为在cron下每小时运行一次
crontab -e
0 * * * * bash /root/ram.sh;
并且,您可以使用此命令检查可用RAM的数量:
free -h
你会得到这样的结果:
total used free shared buffers cached
Mem: 31G 12G 18G 59M 1.9G 973M
-/+ buffers/cache: 9.9G 21G
Swap: 8.0G 368M 7.6G
不太可能的情况是,在客户端和服务器之间有一个防火墙,强制TCP重置到连接中 我有这个问题,我发现我们公司的F5防火墙配置为终止闲置超过5分钟的非活动会话 再一次,这是不太可能的情况。我找到了解决“2006-MySQL服务器已经消失”这个错误的方法。 解决方法就是你必须检查两个文件
C:\wamp64\apps\phpmyadmin4.6.4
在这两个文件中,此值为:
$cfg['Servers'][$i]['host']must be 'localhost' .
我的情况是:
$cfg['Servers'][$i]['host'] = '127.0.0.1';
将其更改为:
"$cfg['Servers'][$i]['host']" = 'localhost';
确保在这两方面:
$cfg['Servers'][$i]['AllowNoPassword'] = true;
然后重新启动Wampserver
更改phpmyadmin用户名和密码的步骤 您可以通过config.inc.php文件直接更改phpmyadmin的用户名和密码 这两条线
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
在这里,您可以提供新的用户名和密码。
更改后,保存文件并重新启动WAMP服务器。我在Ubuntu桌面上的不同MySQL客户端软件中收到错误消息2006。结果是我的JDBC驱动程序版本太旧了 这可能是.sql文件大小的问题 如果您使用的是xampp。转到xampp控制面板->单击MySql配置->打开my.ini 增加数据包大小
max_allowed_packet = 2M -> 10M
如果您使用的是64位WAMPSERVER,请搜索多次出现的max_allowed_packet,因为WAMP使用的是[wampmysqld64]下设置的值,而不是[mysqldump]下设置的值,这对我来说是个问题,我更新了错误的值。将其设置为max_allowed_packet=64M 希望这能帮助其他Wampserver用户摆脱困境
$cfg['Servers'][$i]['host'] = '127.0.0.1';
"$cfg['Servers'][$i]['host']" = 'localhost';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
max_allowed_packet = 2M -> 10M
# 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()
[mysqld]
# 8 hours
wait_timeout = 28800
# 8 hours
interactive_timeout = 28800
max_allowed_packet = 256M
set global wait_timeout = 600;
set innodb_log_file_size =268435456;
public static function getConnection($database, $host, $user, $password)
{
if (!self::$instance) {
return self::newConnection($database, $host, $user, $password);
} elseif ($database . $host . $user != self::$connectionDetails) {
self::$instance->query('KILL CONNECTION_ID()');
self::$instance = null;
max_connections = 500
db:
image: mysql:8.0
command: --wait_timeout=800 --max_allowed_packet=256M --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/dump:/docker-entrypoint-initdb.d
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}