【问题标题】:MySQL CSV Import IssueMySQL CSV 导入问题
【发布时间】:2014-10-17 20:12:54
【问题描述】:

我正在尝试使用 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 的数据包大小限制进行了相同的更改,但没有运气。

任何帮助将不胜感激

谢谢,

【问题讨论】:

  • 检查他们的答案here

标签: php mysql csv import phpmyadmin


【解决方案1】:

查看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 结构中的 reconnect 标志等于 1,MySQL 也不会自动重新连接并重新发出查询,因为它不知道服务器是否确实获得了原始查询。对此的解决方案是,如果自上次查询以来已经很长时间(这是连接器/ODBC 所做的),则在连接上执行 mysql_ping(),或者将 mysqld 服务器上的 wait_timeout 设置得如此之高,以至于实际上永远不会出去。

【讨论】:

    猜你喜欢
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2012-11-12
    • 2015-10-12
    • 2011-09-08
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多