不同的解决方案`在其他无缓冲的查询处于活动状态时无法执行查询

时间:2017-10-11 08:50:47

标签: php mysql pdo mariadb

我刚刚从MySQL迁移到更新的MariaDB,我的所有网站现在都在显示:

  

当其他未缓冲的查询处于活动状态时,无法执行查询。   考虑使用PDOStatement :: fetchAll()。或者,如果您的代码   只会对mysql运行,你可以启用查询   通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性进行缓冲。

我搜索了这个错误并尝试按照人们的建议行事。

所以我将代码更改为使用PDO' closeCursor()。 我尝试使用PDO::MYSQL_ATTR_USE_BUFFERED_QUERY但没有任何作用。

1 个答案:

答案 0 :(得分:0)

以下是我的构造函数的样子:

$pdo = new PDO('mysql:host=' . $host . ';dbname=' . $db . ';port=' . $port, $user, $pass, 
                array(
                  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8;SET SESSION time_zone="system"', 
                  PDO::MYSQL_ATTR_LOCAL_INFILE => true
                ));

我把它改成了

$pdo = new PDO('mysql:host=' . $host . ';dbname=' . $db . ';port=' . $port, $user, $pass, 
                array(
                  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8, SESSION time_zone="system"',     
                  PDO::MYSQL_ATTR_LOCAL_INFILE => true
                ));

现在确实有效。

我在这里发布我的解决方案,因为所有其他地方都有“错误”的解决方案。

所以区别在于

'SET NAMES utf8;SET SESSION time_zone="system"'

PDO::MYSQL_ATTR_INIT_COMMAND我有:

'SET NAMES utf8, SESSION time_zone="system"'

现在一切都很好。