MySQL错误2014原因无法执行查询--P…
来源:互联网 发布:广州岗顶数据恢复 编辑:程序博客网 时间:2024/06/03 20:37
网上查了不少
最后定位到PDO这个类
http://stackoverflow.com/questions/17434102/causes-of-mysql-error-2014-cannot-execute-queries-while-other-unbuffered-queries&usg=ALkJrhgqG0PsXgSYk9W7uMgl
这个网址说的不错
MySQL客户端协议不允许一个以上的查询是“进行中”。
客户端库解决这个通过获取第一个查询的所有行隐含在第一次提取,然后后面的提取只需遍历内部缓存的结果。
所不同的是一个缓冲的查询保存结果在MySQL客户端库,因此PHP无法访问行,直到你取(每个顺序)一行。
主要理由不使用使用fetchall()是一个结果可能是太大,无法在你的PHPmemory_limit的。
您可以closeCursor(),以“抛弃”的结果你已经获取最后一行之前。
另外:我注意到你在执行你的$而stmt2一遍又一遍的循环中,但它每次都会返回相同的结果。
因此,我建议编写你的代码是这样的:
$sql ='SELECT temp_id FROM temp1'; $stmt2 = db::db()->prepare($sql); $stmt2->execute(); $rs2 = $stmt2->fetchAll(PDO::FETCH_ASSOC); $stmt2->closeCursor(); $sql='SELECT COUNT(*) AS valid FROM cities_has_zipcodes WHERE cities_id=:cities_id AND zipcodes_id=:zipcodes_id'; $stmt1 = db::db()->prepare($sql); foreach($data AS $row) { try { $stmt1->execute($row); $rs1 = $stmt1->fetchAll(PDO::FETCH_ASSOC); $stmt1->closeCursor(); syslog(LOG_INFO,'$rs1: '.print_r($rs1[0],1).' '.rand()); syslog(LOG_INFO,'$rs2: '.print_r($rs2[0],1).' '.rand()); } catch(PDOException $e){echo(sql_error($e));} }
请注意我还使用命名参数,而不是位置参数,这使得它易于$行传递的参数值的数组。 :
前缀数组的键,但是你不需要再这样了。
你应该使用的mysqlnd反正。
很多的解决办法:
http://micate.me/php-pdo-unbuffered-queries-active.note
http://www.flashj.cn/wp/pdo-transaction-err-in-php.html
这两个站点也不错,可以参考下
- MySQL错误2014原因无法执行查询--P…
- mysql查询错误原因+PHP复选框
- linux下mysql命令无法执行的原因
- mysql子查询必须加上别名,否则无法执行
- Mysql 1067 错误原因
- 执行shell脚本错误原因
- MySQL 查询执行基础知识
- MySQL查询执行过程
- mysql查询执行顺序
- MySql查询执行过程
- MySQL查询执行过程
- mysql查询执行过程
- MySQL查询执行步骤
- MySQL 查询执行流程
- MySQL查询执行过程
- 使用控制台执行MySQL命令时,出现1366错误的原因与解决方案
- MySQL脚本执行错误
- PlayFrameWork2eclipse命令无法执行的原因
- 用header或meta实现PHP页面…
- Java多态例题
- MongoDB--YII-MongoClient 类…
- Mysql 复合唯一键值的使用--O…
- mysql操作技巧随笔--链表删除数据
- MySQL错误2014原因无法执行查询--P…
- 饼状图、曲线图、直方图项目中高端展示
- Codeforces Round #344 (Div. 2) 631A Interview (DP)
- 解决session的问题的本质也就是解决session的存储问题
- 使用PDO查询Mysql来避免SQL注入风…
- php中static静态变量的用法介绍
- MySQL--慢查询
- memcached分布测试报告(一致性哈…
- nginx的valid_referers指令防盗链