查询期间丢失与MySQL服务器的连接?

时间:2011-06-29 07:09:27

标签: mysql

  

可能重复:
  Lost connection to MySQL server during query

我将一些数据从大型csv导入到mysql表中。在将文件导入表格的过程中,我丢失了与服务器的连接。

出了什么问题?

错误代码为2013:查询期间与mySql服务器的连接丢失。

我正在Windows服务器上远程运行这些来自ubuntu计算机的查询。

6 个答案:

答案 0 :(得分:39)

尝试以下两件事......

1)将其添加到my.cnf / my.ini部分的[mysqld]

max_allowed_packet=32M

(您可能必须根据现有数据库将此值设置得更高)。

2)如果导入仍然无效,请尝试这样做......

mysql -u <user> --password=<password> <database name> <file_to_import

答案 1 :(得分:22)

通常在为数据库会话耗尽一个资源(例如内存)时会发生这种情况,并且mysql会关闭连接。

您可以将CSV文件分解为较小的文件并进行处理吗?或者每100行提交一次?我们的想法是,您运行的事务不应该尝试插入大量数据。

我忘了添加,此错误与配置属性max_allowed_packet有关,但我不记得要更改的内容的详细信息。

答案 2 :(得分:8)

我发现这个问题的最简单的解决方案是将MySql从MySQL Workbench降级到MySQL版本1.2.17。我浏览了一些MySQL论坛,据说MySQL Workbech中的超时时间已被硬编码为600,一些建议的改变它的方法对我来说不起作用。如果某人遇到与工作台相同的问题,您也可以尝试降级。

答案 3 :(得分:6)

1)您可能需要增加连接的超时时间。

2)您可以通过使用--log-warnings = 2选项启动 mysqld 来获取有关丢失连接的更多信息。

这会记录 hostname.err 文件

中的一些断开连接的错误

您可以将其用于进一步调查

3)如果您尝试将数据发送到BLOB列,请检查服务器的 max_allowed_pa​​cket 变量,该变量的默认值为1MB。您可能还需要增加客户端的最大数据包大小。有关设置数据包大小的更多信息,请参见以下链接“Packet too large”。

4)您可以查看以下网址link

5)您应检查可用磁盘空间是否大于您尝试更新的表格link

答案 4 :(得分:3)

您可能希望阅读此内容 - http://dev.mysql.com/doc/refman/5.0/en/gone-away.html - 这很好地解释了“在查询期间丢失连接”方案的原因和解决方法。

在你的情况下,可能是因为Augusto指出的max allowed packet size。或者,如果您已经验证不是这种情况,则可能是connection wait timeout设置,因为客户端正在失去连接。但是,我不认为后者在这里是正确的,因为它是一个CSV文件,不包含查询。

答案 5 :(得分:-4)

我认为您可以使用mysql_ping()功能。

此函数检查与服务器的连接是否存在。如果失败,那么您可以重新连接并继续查询。