首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PDO beginTransaction故障

PDO beginTransaction故障
EN

Stack Overflow用户
提问于 2015-11-23 02:35:39
回答 3查看 861关注 0票数 17

我在我的php error_log中得到了以下错误

PHP警告:发送查询包时出错。测试/home/ PID=29770 /test.php中的第87行

在我的php脚本的第87行,代码id

$DBH->beginTransaction();

在此之后,当我提交时,我会得到以下错误

异常'PDOException‘,并在/home/test/test.php:98中显示消息'There no active transaction’

我已经设置了max_allowed_packet=512M,我的表是InnoDB

这里出了什么问题?

EDIT:我的代码在一个循环中运行,以便将总的100,000+记录插入到表中,我在每个事务中执行5000次多次插入。这是我的代码结构

beginTransaction
 Multiple insert query for 5000 records
commit

在循环中运行以插入100,000+记录。脚本有时会成功运行,有时会失败。

我在6-7个循环的中间得到这个错误。(在插入30k到40k记录之后)

EN

回答 3

Stack Overflow用户

发布于 2016-01-25 14:12:02

我在网上搜索了“发送查询数据包时出错”这句话。它能够打开这个链接:http://www.willhallonline.co.uk/blog/max-packet-size-php-error

这篇文章的作者也有类似的问题,他也尝试了“增加max_allowed_packet大小”和增加超时,但都不起作用。但似乎起作用的是将工作分成更小的部分。

我们新的较小的csv文件在MySQL中成功更新,尽管我们仍然不知道是什么导致了最初的错误。

我不清楚他们是在一个PHP进程的生命周期内处理了许多块,还是多次运行代码,但这个想法似乎很合理;也许您可以试一试。

票数 1
EN

Stack Overflow用户

发布于 2016-03-21 16:34:22

另一种可能性是将数据写入CSV文件,并使用MySQL LOAD DATA INFILE将其加载到数据库(这里是link to MySQL docs)。我尝试使用大小为250MB的CSV文件,它工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2015-12-09 21:27:04

与数据库的连接可能不是持久的。这可能会导致事务在提交之前被清除,从而导致错误。

我宁愿评论,因为这不是一个“答案”本身,但不幸的是,我没有所需的声誉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33858576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档