27

当我尝试导入 MYSQL 数据库时,出现以下错误:

Error Code: 2013 - Lost connection to MySQL server during queryQuery:
Error Code: 2006 - MySQL server has gone away

有人可以让我知道出了什么问题吗?

4

14 回答 14

39

调查显示许多解决方案正确地讨论了在 my.cnf 中为 mysql 设置 max_allowed_pa​​cket 和 wait_timeout;小附录,在 mac osx 上默认安装的 mysql 似乎不包含此文件。您可能首先需要在 /etc/my.cnf 中创建它(如果您使用 mysql 的默认安装而不是 mamp 堆栈或类似的,这只是一个问题)

/etc/my.cnf 的内容在下面为我纠正了这个问题:

[mysqld]
max_allowed_packet= 64M
wait_timeout= 6000
于 2012-08-20T22:08:38.593 回答
12

在这里您可以阅读有关此错误的更多信息以及避免/解决它的各种方法

从文档:

MySQL server has gone away 错误最常见的原因是服务器超时并关闭了连接

于 2011-05-19T06:49:18.717 回答
4

如果您的 INSERT 查询是包含多行的太大单行语句,则经常发生这种情况。

于 2014-06-02T05:56:45.517 回答
3

尝试以下与 2006 错误相关的修复:

  • 服务器超时并关闭连接。如何修复:检查 mysqld 的 my.cnf 配置文件中的 wait_timeout 变量是否足够大。

  • 服务器丢弃了不正确或太大的数据包。如果 mysqld 收到一个太大或不正确的数据包,它会假定客户端出现问题并关闭连接。您可以通过增加 my.cnf 文件中的 max_allowed_pa​​cket 的值来增加最大数据包大小限制。

于 2011-05-19T06:53:12.990 回答
3

尝试重启mysql服务器。服务器可能无法正常工作,但 sql 通知程序也显示正在运行。

于 2015-12-29T07:17:20.017 回答
2

我尝试了所有解决方案,但没有任何效果
我使用工作台远程连接 hostgator
我意识到 mysql 服务器 hostgator 是 5.5 版本,
当我将工作台设置为 5.5 时,我的工作台设置为 5.6 版他开始工作

编辑/首选项/mysql/默认目标版本
在此处输入图像描述

于 2016-06-14T02:23:09.903 回答
2

my.cnf这是编辑文件的替代方法。您可以通过登录 MySQL 服务器来设置 MySQL 全局变量的值。

您可以使用以下命令检查所有 MySQL 全局变量及其值的列表:

$> mysqladmin variables -u YourMysqlUsername -p

您还可以通过首先登录 MySQL 服务器来检查这些变量值:

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES;

要检查特定的变量值:

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';

要解决MySQL Server Gone Away错误,您需要增加max_allowed_packet变量的值。

mysql> SET GLOBAL max_allowed_packet=1072731894;
mysql> quit

现在,当您再次登录 MySQL 并检查该max_allowed_packet值时,您应该会看到更新后的值。

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1072731136 |
+--------------------+------------+
1 row in set (0.00 sec)
于 2018-09-24T07:22:14.877 回答
1

这个问题发生在你身上的原因有很多,在这里你可以找到所有可能的原因,我个人一直在努力解决数据包的大小问题,但我已经更新了 my.ini 文件,但在此之前,我我检查了给我 1048576B = 1MB 的 max_allowed_pa​​cket 变量,我已经更新到 5MB。显示变量,其中 variable_name like '%packet%'

选择 1048576 / 1024 / 1024

选择 5242880 / 1024 / 1024

于 2014-10-15T20:46:34.247 回答
1

显示你的 mySql 变量

  • 显示像“max%”这样的变量

  • 设置全局 max_allowed_pa​​cket={PacketRANGE}; // 像这样 10485760;

  • 显示全局变量,如“max_all%”;

在这里享受你的编码

于 2017-02-14T10:05:13.953 回答
1

在 MySQL 5.7 中,这个错误可能是由一个太大的通信包产生的:

当 MySQL 客户端或 mysqld 服务器接收到大于 max_allowed_pa​​cket 字节的数据包时,它会发出 ER_NET_PACKET_TOO_LARGE 错误并关闭连接。对于某些客户端,如果通信数据包太大,您可能还会在查询错误期间丢失与 MySQL 服务器的连接。

MySQL 中的数据包是:

通信包是发送到 MySQL 服务器的单个 SQL 语句,发送到客户端的单行,或者从主复制服务器发送到从服务器的二进制日志事件。

您可以在此处找到文档:DOC
您应该尝试将max_allowed_pa​​cket设置为更大的值(默认值为 4MB)以解决您的 SQL 脚本是否大于此大小。您可以在选项文件中设置此值,这样您就不必每次都进行设置。
在 Microsoft Windows Vista 和更高版本上,您可以将max_allowed_pa​​cket设置到文件
%PROGRAMDATA%\MySQL\MySQL Server 5.7\my.ini

%PROGRAMDATA%\MySQL\MySQL Server 5.7\my.cnf

其中 PROGRAMDATA = C:\ProgramData
更多信息(也适用于其他 SO)这里

于 2017-05-05T09:49:59.047 回答
0

当我尝试在表的末尾添加一列时,我发现在使用 MySQL Workbench 8.0 的 My SQL 中经常发生这种情况。此外,该表随后被锁定且无法使用。试图放下桌子直到一两天后才起作用。但是,我发现在现有列之间插入新列时没有任何问题......

于 2020-01-29T13:17:52.853 回答
0

正如都铎在他的反应中提到的那样:

 The most common reason for the MySQL server has gone away error is that the 
 server timed out and closed the connection

您需要更改最大执行时间和大小,您可以使用以下命令来执行此操作:

SET GLOBAL wait_timeout = 6000;
SET GLOBAL max_allowed_packet= 64M;

它们是 sql 命令,因此您可以像普通命令一样执行它们。

于 2017-04-11T08:04:47.233 回答
0

有时会发生这种情况,您的服务器上的那些人处于脱机状态,而您使用的是在更改密码之前创建的 MySQL 连接。这就是为什么您应该在更改服务器密码后创建一个新的连接并使用 SQL 练习。

于 2019-12-13T10:50:30.057 回答
0

如果您的 INSERT 查询是包含多行的太大单行语句。

于 2021-12-15T10:13:24.290 回答