ai didi

php - PDO MySQL : Warning: Packets out of order

转载 作者:可可西里 更新时间:2023-11-01 08:16:30 24 4
gpt4 key购买 nike

我收到错误“未捕获的异常 警告:数据包乱序。预期 1 收到 166。数据包大小 = 52"当一个接一个地运行两个 PDO 查询时。

$dbh = new \PDO('mysql:host=' . $dbHost . ';dbname=' . $dbName, $dbUser, $dbPass, array(
\PDO::MYSQL_ATTR_LOCAL_INFILE => true
));

$sql = <<<eof
LOAD DATA LOCAL INFILE '$csv'
INTO TABLE $table
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
($columns);
ALTER TABLE $table ADD COLUMN disabled INT DEFAULT 0
eof;
$dbh->query($sql);
$sql = 'SELECT COUNT(id) FROM '.$table.' WHERE myfield IS NULL';
$dbh->query($sql);

我想做的是:将大型 CSV 文件(大约 30 MB 和 40k 行)导入数据库后,我想计算一个字段中有多少行是空的,以便在以后的查询中填充它们。

我注意到,如果我注释掉第二个查询,我可以运行第一个查询,然后如果我注释掉第一个查询,我可以运行第二个查询。如果我尝试一个接一个地运行它们,它就会失败。我尝试将内存包从 8M 提高到 20M,并设置 $dbh->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true);没有成功。类似的代码之前适用于较小的数据集。非常欢迎任何指点!

最佳答案

好吧,实际上在上面的 eof 语句中我放置了不止一个查询。内联加载数据后,我添加了一些 alter table 查询。似乎 pdo 无法在一个 eof block 中处理多个查询。所以我尝试将每个查询分离到它自己的请求中,然后它起作用了。

关于php - PDO MySQL : Warning: Packets out of order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25726529/

24 4 0
文章推荐: c# - 以纯文本格式发送邮件时忽略换行符
文章推荐: android - 在应用程序中启动 Android 应用程序?
文章推荐: C# 项目、正确的版本控制、公司等部署
文章推荐: android - 如何在同一 View 中启动子 Activity ?
可可西里
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com