MySQL CSV导入问题

时间:2014-08-24 15:00:30

标签: php mysql csv import phpmyadmin

我正在尝试使用phpmyadmin

将CSV上传到mysql数据库

当我尝试使用缩短版本的数据库时,该过程正常,但是当我尝试使用完整数据库时,我收到错误:

#2006 - MySQL server has gone away

我的CSV工作部分是:

trans_id,price_paid,date,postcode,property_type,poperty_type_2,hold,add_num,add_flat,add_road,add_area,add_city,add_borough,add_county,add_rand
{33C588EE-BB09-4F6F-BA8C-000312C72B3B},159950,23/05/2014 00:00,SL6 9LX,F,N,L,2,,THE SHAW,COOKHAM,MAIDENHEAD,WINDSOR AND MAIDENHEAD,WINDSOR AND MAIDENHEAD,A
{2C650B8C-57C0-421C-A4A9-00037BDFDCFB},158000,30/05/2014 00:00,NN14 1RJ,T,N,F,4,,MIDLAND COTTAGES,RUSHTON,KETTERING,KETTERING,NORTHAMPTONSHIRE,A
{74FA45D0-CB64-40E1-94C4-00055AEBF72C},470000,30/05/2014 00:00,KT20 5SF,D,N,F,11,,CHAPEL ROAD,,TADWORTH,REIGATE AND BANSTEAD,SURREY,A
{054AB14B-0EED-48FD-B3CD-0005B154A5C3},135000,23/05/2014 00:00,NR27 9AZ,F,N,L,48,,ALBANY COURT,,CROMER,NORTH NORFOLK,NORFOLK,A
{86896E40-68BA-4BA2-8468-0006258B9C41},124995,09/05/2014 00:00,L24 9NA,S,Y,L,131,,ADDENBROOKE DRIVE,SPEKE,LIVERPOOL,LIVERPOOL,MERSEYSIDE,A
{A948BD6F-DD91-4DE9-82D1-0008226FC360},95000,13/06/2014 00:00,HU6 7XE,S,N,F,51,,DOWNFIELD AVENUE,,HULL,CITY OF KINGSTON UPON HULL,CITY OF KINGSTON UPON HULL,A
{7191F69F-7648-4603-9CE7-000882808E16},174000,19/05/2014 00:00,DT5 1HX,T,N,F,2,,LONG ACRE,,PORTLAND,WEYMOUTH AND PORTLAND,DORSET,A
{525BE511-1351-475F-9765-0009645D0B60},328000,11/06/2014 00:00,TW18 2EP,T,N,F,1,,EDGELL ROAD,,STAINES-UPON-THAMES,SPELTHORNE,SURREY,A

我试过了:

将/etc/my.cnf中的max_packet=64M增加到64M,将wait_timeout= 1000增加但没有运气。

我也对php.ini上的数据包大小限制进行了相同的更改,但没有运气。

任何帮助将不胜感激

谢谢,

1 个答案:

答案 0 :(得分:0)

查看MySQL error #2006上的文档。我已经在下面列出了一些更有可能的可能性:

  • 您在服务器端遇到超时,并且客户端中的自动重新连接被禁用(MYSQL结构中的重新连接标志等于0)。
  • 如果向服务器发送不正确或太大的查询,也会出现这些错误。如果mysqld收到的数据包太大或无序,则会假定客户端出现问题并关闭连接。如果需要大查询(例如,如果使用大型BLOB列),则可以通过设置服务器的max_allowed_pa​​cket变量来增加查询限制,该变量的默认值为1MB。您可能还需要增加客户端的最大数据包大小。有关设置数据包大小的更多信息,请参见第B.5.2.10节“数据包太大”。 这可能不是问题,因为您已经完成了建议的解决方案。
  • 如果您的客户端早于4.0.8并且您的服务器是4.0.8及更高版本,或者相反,如果您要发送16MB或更大的数据包,也会丢失连接。

还有一个特定于Windows应用程序的错误,所以如果你正在使用Windows,请检查出来:

  • 您正在使用Windows客户端,并且在发出命令之前服务器已断开连接(可能是因为wait_timeout已过期)。 Windows上的问题是,在某些情况下,MySQL在写入到服务器的TCP / IP连接时不会从操作系统中收到错误,而是在尝试从连接中读取答案时收到错误。在MySQL 5.0.19之前,即使MYSQL结构中的重新连接标志等于1,MySQL也不会自动重新连接并重新发出查询,因为它不知道服务器是否确实获得了原始查询。解决这个问题的方法是在连接上做一个mysql_ping(),如果自上次查询以来已经很长时间了(这就是Connector / ODBC所做的那样),或者在mysqld服务器上设置wait_timeout这么高,以至于它在实践中从不出。