我刚刚在我的计算机上安装了一个SQL服务器,并将数据存储指向另一个非C驱动器。我通过以下方式创建表后,一直尝试导入Kaggle数据作为测试:
LOAD DATA LOCAL INFILE 'G:\\Extract_large\\user_logs.csv'
INTO TABLE user_logs
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows;
当然,由于数据相当大,并且在每次尝试导入期间,我始终通过Error Code: 2013 Lost connection to MYSQL server during Query
失去与服务器的连接。我做了一些搜索,并在stackoverflow中遇到了一些其他类似的线程(不是专门针对localhost),这导致我增加了DBMS Connection参数,特别是我设置:
DBMS connection Keep-alive interval (in seconds): 10,000
DBMS connection read timeout (in seconds): 200
DBMS connection timeout (in seconds): 10,000
这无法解决问题,因此我进一步修改了my.ini
信息以设置max_allowed_packet=100000M
。一旦我重新启动服务器,这仍然无法正常工作。
最后,我在SQL中尝试了set global max_allowed_packet=500000000000
。再次没有成功。我的想法......帮助?
以下是我设法在此主题中找到的其他主题:here,here和here。
注意:我使用MySQL 5.7运行Windows 7。错误似乎发生在30.5或1573.6秒(给出或花费几毫秒)。
答案 0 :(得分:0)
根据https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet
,max_allowed_packet的最大允许值为1G我尝试使用MySQL 5.6.31进行测试,将其更改为500G,但忽略了更改,之前的值仍然有效。
另请注意,除了更改服务器端max_allowed_packet之外,您可能还需要在某些客户端中更改同名选项,特别是mysql
和mysqldump
。其他命令行客户端使用客户端默认值1GB。
因此,如果您使用LOAD DATA
客户端运行mysql
,则需要告知客户端使用更大的数据包大小。
mysql --max_allowed_packet=1073741824 ...