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

Symfony Panther激活alice-bundle的ReloadDatabaseTrait后数据库连接超时

Symfony+PostgreSQL环境下hautelook/alice-bundle与Panther测试ReloadDatabaseTrait冲突解决方案

这个冲突的核心原因是hautelook/alice-bundle自带的ReloadDatabaseTrait默认采用事务回滚的方式重置测试数据,会长期持有独占数据库连接,而Panther测试启动的独立Web服务器进程需要新建数据库连接,被独占锁阻塞后就会触发连接超时。

可按以下优先级尝试解决方案:

  • 调整alice-bundle测试环境配置,关闭事务代理,改用truncate方式重置数据
    在config/packages/test/hautelook_alice.yaml中添加如下配置:
    hautelook_alice:
        db_drivers:
            pgsql:
                enable_proxy: false
        loaders:
            doctrine:
                purge_mode: truncate
    
  • 调整Doctrine测试环境配置,放宽连接限制、延长超时时间
    在config/packages/test/doctrine.yaml中修改对应配置:
    doctrine:
        dbal:
            connections:
                default:
                    options:
                        PDO::ATTR_TIMEOUT: 30
                    pool_size: 10
    
  • 禁用PHPUnit并行测试
    运行测试时添加参数--processes 1强制单线程执行,alice-bundle默认的连接管理逻辑不支持多进程并行测试的连接复用。
  • 自定义数据库重置逻辑替代原生ReloadDatabaseTrait
    如果仅需加载固定fixture,可自行实现测试trait:在测试套件启动前预加载一次fixture数据,每次单测试执行前仅truncate需要清空的业务表,完全避开alice-bundle的连接独占逻辑,同时还能提升测试执行速度。

内容的提问来源于stack exchange,提问作者Mark van Haaren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:18:02