1
# 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)有一个错误

4

0 回答 0