BLT 9配置Drupal多站点异常:指定数据库未被使用求助
解决BLT 9多站点Setup时未使用指定数据库的问题
我之前配置BLT多站点的时候也踩过这个一模一样的坑,核心问题是BLT并不会自动同步DrupalVM的数据库配置到站点专属的BLT配置里,得手动对齐配置逻辑。给你一步步的排查和解决方法:
1. 配置站点专属的BLT数据库参数
BLT的多站点配置需要在站点专属的YML文件里明确数据库信息,不会自动读取DrupalVM的box/config.yml。你需要创建(或修改)blt/config/sites/example.yml文件,填入和DrupalVM里完全一致的数据库配置:
drupal: database: database: example_db # 和你在box/config.yml里定义的数据库名保持一致 username: example_user # 对应你配置的数据库用户名 password: your_db_password # 对应数据库密码 host: localhost port: 3306
如果这个文件不存在,直接新建即可,BLT会自动识别并加载这个站点的专属配置。
2. 确保站点settings.php正确引入BLT配置
检查docroot/sites/example/settings.php,确保里面有引入BLT的配置文件,这样BLT的数据库参数才能覆盖默认的数据库连接:
// 这行代码一般BLT初始化多站点时会自动添加,要是没加就手动补上 require DRUPAL_ROOT . '/../blt/vendor/acquia/blt/settings/blt.settings.php';
注意:不要在这个文件里手动硬编码数据库连接信息,否则会和BLT的配置产生冲突。
3. 验证site参数的正确性
执行blt setup --define site=example时,要确认example是BLT识别的站点机器名:
- 运行
blt sites命令,查看输出里是否包含example站点; - 确保站点目录名
docroot/sites/example和BLT配置里的站点名称完全一致(大小写敏感)。
4. 清空BLT配置缓存
BLT会缓存配置信息,有时候修改配置后不会立即生效,先清空缓存再重新执行setup:
blt config:clear blt setup --define site=example -v
加-v可以查看verbose输出,能帮你精准定位到底是哪一步读取了错误的数据库配置。
5. 确认DrupalVM的数据库已正确创建
最后验证一下DrupalVM里的数据库是否真的存在:
vagrant ssh mysql -u example_user -p # 输入对应的数据库密码 SHOW DATABASES; # 查看是否存在example_db
如果数据库没创建成功,得先重新执行vagrant provision确保数据库和用户都正确生成。
如果以上步骤都做完还是有问题,仔细看一下BLT的日志输出,找有没有数据库连接相关的错误信息,一般就能快速定位到问题了。
内容的提问来源于stack exchange,提问作者Peter Csukardi
相关产品推荐
相关产品推荐

