You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MODX出现PDO unbuffered queries报错 如何修改相关配置?

MODX PDO未缓冲查询报错配置修改方案

报错原文如下:

Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.


配置修改位置

你可以通过两种方式修改PDO查询缓冲配置:

1. 修改全局核心配置文件

打开站点根目录下的core/config/config.inc.php文件,找到$database_options配置数组,在数组内添加如下配置项:

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,

修改完成后保存文件,清空MODX全站缓存即可生效,该配置会全局作用于所有MODX自带的数据库连接。

2. 自定义代码中单独设置

如果不想修改全局核心配置,仅需要在特定自定义Snippet、插件的数据库操作中生效,可以在执行查询前手动设置PDO属性:

// 获取当前数据库连接实例并设置缓冲查询属性
$modx->getConnection()->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

注意事项

  • 修改配置文件前务必提前备份原文件,避免配置语法错误导致站点无法正常运行
  • 建议优先排查导致报错的代码逻辑:检查是否存在查询结果未完全遍历、未主动释放PDOStatement资源的情况,优先使用fetchAll()获取所有查询结果再处理,从根源解决问题比强制开启缓冲更稳妥
  • 该配置仅适用于MySQL数据库,其他数据库类型不支持该属性设置

内容的提问来源于stack exchange,提问作者Niko Suominen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03