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

如何修复Drupal执行drush cr时出现的database.replica_kill_switch服务不存在错误?

解决Drupal执行drush cr报错“database.replica_kill_switch”不存在的问题

这个错误我之前帮不少开发者排查过,核心原因基本围绕数据库配置、版本兼容或自定义代码依赖这几个方向,给你一步步来排查:

1. 检查本地环境的数据库配置(settings.php)

  • 首先打开sites/default/settings.php,搜索$databases['default']['replica']相关配置。如果你的本地环境不需要读写分离(也就是没有配置副本数据库),但配置文件里保留了线上的replica数据库设置,就会触发这个错误——直接把这块配置注释掉或者删除即可。
  • 另外,检查配置文件里有没有自定义代码手动调用了database.replica_kill_switch服务,有的话暂时注释掉,先完成缓存清理再调试。

2. 验证Drush与Drupal版本的兼容性

不同版本的Drush对Drupal核心的依赖要求很严格,比如:

  • Drush 9 适配 Drupal 8.4.x 及以上版本
  • Drush 10 适配 Drupal 8.7.x+ 和 Drupal 9.x
  • Drush 11+ 主要适配 Drupal 9.x 和 10.x

执行以下命令确认版本:

drush --version
drush core-status

如果版本不匹配,建议调整Drush版本(本地环境用composer require drush/drush:^x.x来安装对应版本更方便)。

3. 排查第三方模块或自定义代码的问题

  • 有些性能优化模块会依赖数据库副本切换功能,或者自定义模块里误引用了database.replica_kill_switch服务。你可以先禁用所有非核心模块测试:
    drush pm:uninstall --all-unneeded
    
    执行后再跑drush cr,如果缓存清理正常,再逐个启用模块排查是哪个模块导致的问题。
  • 检查自定义模块的services.yml文件和业务代码,确认有没有错误声明或调用这个服务,比如拼写错误或者依赖了线上环境才有的配置。

4. 手动清理缓存文件

如果自动缓存清理一直失败,试试手动清理:

  • 删除sites/default/files/php目录下的所有缓存文件
  • 删除vendor/composer/autoload_classmap.php,然后执行composer dump-autoload重新生成自动加载文件
  • 最后再执行drush cr尝试清理缓存

内容的提问来源于stack exchange,提问作者Sathish Sundar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:57:30