我刚刚从MySQL迁移到更新的MariaDB,我的所有网站现在都在显示:
当其他未缓冲的查询处于活动状态时,无法执行查询。 考虑使用PDOStatement :: fetchAll()。或者,如果您的代码 只会对mysql运行,你可以启用查询 通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性进行缓冲。
我搜索了这个错误并尝试按照人们的建议行事。
所以我将代码更改为使用PDO' closeCursor()
。
我尝试使用PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
但没有任何作用。
答案 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"'
现在一切都很好。