php - MySQL CSV 导入问题

标签 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 上的数据包大小限制进行了相同的更改,但没有成功。

如有任何帮助,我们将不胜感激

谢谢

最佳答案

查看 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也不会自动重新连接并重新发出查询,因为它不知道服务器是否收到了原始查询。解决这个问题的方法是,如果自上次查询以来已经过了很长时间(这就是 Connector/ODBC 所做的),则在连接上执行 mysql_ping() ,或者在 mysqld 服务器上设置 wait_timeout 太高,以至于实际上永远不会出现出去。

关于php - MySQL CSV 导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473013/

相关文章:

php - 为什么使用 PHPUnit 比创建自己的测试脚本更好?

php - Woocommerce 可选产品属性

mysql - 如何在 Go 中构建类型接口(interface)的变量?

windows - odo 在 csv 和 mysql 之间转换数据

json - Node JS : Conversion from JSON to CSV

php - 强制转换还是函数调用?

php - 找不到列 : 1054 Unknown column '_token' in 'field list' Laravel

mysql 不区分 e 和 è

php - 来自本地主机中 MySQL 的登录警告

python - 查看非常大的 CSV 文件的一部分?