# doctrine.yaml
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_MASTER_URL): ''
env(DATABASE_SLAVE1_URL): ''
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
url: '%env(resolve:DATABASE_MASTER_URL)%'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
slaves:
slave1:
url: '%env(resolve:DATABASE_MASTER_URL)%'
charset: utf8mb4
当我运行时,php bin/console cache:clear
我收到此错误:
The options 'driver' or 'driverClass' are mandatory if no PDO instance is given to DriverManager::getConnection().
当我们没有覆盖环境变量DATABASE_MASTER_URL
&时,就会发生这种情况DATABASE_SLAVE1_URL
。在我们的 gitlab 管道的步骤中,手头没有这些值,我们需要清除/预热缓存。
这里有趣的是:如果我删除奴隶的定义,一切正常。它只发生在我们定义从属的场景中。
附加信息 1
WrapperClass "MasterSlaveConnection" 完全符合需要,但只是迟到了。master
它从配置中获取“驱动程序”并将其注入slave
节点。
但这发生在被调用之后。 DriverManager::parseDatabaseUrlScheme
所以要么 1)我在这里做错了,文档有改进的余地,要么 2)有一个错误