我将一些数据从大型csv导入到mysql表中。在将文件导入表格的过程中,我丢失了与服务器的连接。
出了什么问题?
错误代码为2013:查询期间与mySql服务器的连接丢失。
我正在Windows服务器上远程运行这些来自ubuntu计算机的查询。
答案 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_packet 变量,该变量的默认值为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()功能。
此函数检查与服务器的连接是否存在。如果失败,那么您可以重新连接并继续查询。