MySQL插入查询失败,数据太多

时间:2017-07-29 03:05:17

标签: php mysql

我正在尝试使用以下基本代码将大量数据插入MySQL数据库:

$query = "INSERT INTO PublicNoticesTable (url, county, paperco, date, notice, id) VALUES " . $queryString;
$result = mysqli_query($connect, $query);

预先生成$queryString,其中包含以下格式的数千行信息:

('a', 'b', 'c'),('a', 'b', 'c');

这样我可以在一次mysql调用中插入多行数据并减少处理时间。我能够限制进入$queryString的信息量,并且当查询成功的信息量较少时。好极了!当我提供一点点信息时,查询失败了。如果有人能为我提供解决方案,我将不胜感激。我正在使用GoDaddy和PHPMyAdmin,如果这很重要的话。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您尝试使用INSERT ... VALUES模式插入值,那么您的限制为max_allowed_packet。当我放置太多信息时,查询失败,那么为什么现在不调试{{1 }}

来自文档:

  

要优化插入速度,请将许多小型操作合并为一个   大手术。理想情况下,您进行单个连接,发送数据   对于许多新行,同时延迟所有索引更新和一致性   检查直到最后。

MySQL客户端或mysqld服务器收到大于mysqli_error($connect)字节的数据包,它会发出数据包太大的错误并关闭连接。

尝试查看数据包的最大大小

max_allowed_packet
  

SQL长度受1M默认限制,您可以更改   show variables like 'max_allowed_packet'; 参数支持更大的单个插入。

答案 1 :(得分:0)

您可以确保列的最大长度足以合并您的数据。如果您的数据非常长(每列超过10,000个字符),您可以尝试使用blob。