Php PDO+;SQL缓冲查询

Php PDO+;SQL缓冲查询,php,sql,Php,Sql,我需要在一个脚本中运行一系列查询,但是我得到了这个错误 PDOException(HY000):SQLSTATE[HY000]:一般错误:2014不能 在其他未缓冲查询处于活动状态时执行查询。考虑 使用PDOStatement::fetchAll() 我的剧本 $db = Database::connection(); $sql = <<<SQL CREATE TABLE IF NOT EXISTS `comments` ( ... ) ENGINE=InnoDB AUT

我需要在一个脚本中运行一系列查询,但是我得到了这个错误

PDOException(HY000):SQLSTATE[HY000]:一般错误:2014不能 在其他未缓冲查询处于活动状态时执行查询。考虑 使用PDOStatement::fetchAll()

我的剧本

$db = Database::connection();

$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `comments` (
  ...
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8;

SQL;

$db->query($sql)->fetchAll();

$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `comments_ratings` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SQL;

$db->query($sql)->fetchAll();

$sql = <<<SQL
CREATE TRIGGER ...
SQL;

$db->query($sql)->fetchAll();

$sql = <<<SQL
CREATE TRIGGER ...;
SQL;

$db->query($sql)->fetchAll();
$db=Database::connection();

$sql=根据注释,似乎通过调用
exec
方法解决了问题


问题是,尝试使用同一个连接对象执行多个查询,而该连接对象由于某种原因具有活动的无缓冲查询。您需要从连接中删除该活动的无缓冲查询,或者在每次执行查询时关闭该连接并创建一个新的连接对象。解决方法是使用
exec
方法,但选择该解决方案将无法获得该问题的答案。

您是否尝试过上述问题第二个答案中给出的解决方案?无论如何,你应该把问题联系起来,避免这样的事情。社区不知道你指的是哪个答案,来自哪个网站。@ConsiderMe是的,还是不走运。我可能已经尝试了网络上的一切,我在这里发布了最后一个方法。你的数据库类有
exec
方法和“query”方法吗。如果是这样,那么就用它来代替。是的,我知道它应该与
query
方法一起工作,但这取决于db类在运行
query
方法时实际执行的操作。是否在
Database::connection
方法中执行SELECT查询?如果是这样,请确保正确关闭。无论如何,我认为如果你能在不透露密码的情况下共享
连接
方法的代码会很有帮助。猜测-你的
数据库
类期望查询返回一个结果集。“exec”方法适用于成功或失败的SQL。例如:'create',
alter
i.e.(DDL)语句。