Кэш Symfony 2.7: команда clear проверяет каждое подключение к базе данных

Я просто обновился до symfony 2.7 и получил раздражающее поведение.

Некоторые подключения в моем config.yml являются необязательными и описывают внешние базы данных, которые не предназначены для использования в каждом экземпляре prod.

Когда вы делаете кеш: ясно, кажется, что теперь проверяются все соединения, даже если я не хочу, чтобы они были активны на определенном сервере.

При настройке опции -no-warmup проблема возникает в половине случаев

php app/console cache:clear --env=prod --no-warmup --verbose 

[Учение \ DBAL \ Exception \ ConnectionException]
В драйвере возникло исключение: SQLSTATE [42000] [1049] Неизвестная база данных 'bal_syncrho_database'

Трассировка исключения: () в /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:103 Doctrine \ DBAL \ Driver \ AbstractMySQLDriver-> convertException () в / var / www / ror3 / vendor / doctrine / dbal / lib / Doctrine / DBAL / DBALException.php: 133 Doctrine \ DBAL \ DBALException :: driverException () at / var / www / ror3 / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver /PDOMySql/Driver.php:47 Doctrine \ DBAL \ Driver \ PDOMySql \ Driver-> connect () в /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:360 Doctrine \ DBAL \ Connection-> connect () в /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:429 Doctrine \ DBAL \ Connection-> getDatabasePlatformVersion () в / var / www / ror3 / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php: 389 Doctrine \ DBAL \ Connection-> detectDatabasePlatform () в /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php : 328 Doctrine \ DBAL \ Connection-> getDatabasePlatform () at / var / www / ror3 / vendor / doctrine / orm / lib / Doctrine / ORM / Mapping / ClassMetadataFact ory.php: 763 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> getTargetPlatform () в /var/www/ror3/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:616 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> completeIdGeneratorMapping () в /var/www/ror3/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:174 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> doLoadMetadata () в / var / www /ror3/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:332 Doctrine \ Common \ Persistence \ Mapping \ AbstractClassMetadataFactory-> loadMetadata () в / var / www / ror3 / vendor / doctrine / orm / lib / Doctrine / ORM / Mapping / ClassMetadataFactory.php: 78 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> loadMetadata () at / var / www / ror3 / vendor / doctrine / common / lib / Doctrine / Common / Persistence / Mapping /AbstractClassMetadataFactory.php:216 Doctrine \ Common \ Persistence \ Mapping \ AbstractClassMetadataFactory-> getMetadataFor () at / var / www / ror3 / vendor / doctrine / common / lib / Doctrine / Common / Persi stence / Mapping / AbstractClassMetadataFactory.php: 115 Doctrine \ Common \ Persistence \ Mapping \ AbstractClassMetadataFactory-> getAllMetadata () в /var/www/ror3/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php : 69 Symfony \ Bridge \ Doctrine \ CacheWarmer \ ProxyCacheWarmer-> warmUp () в /var/www/ror3/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48 Symfony \ Component \ HttpKernel \ CacheWarmer \ CacheWarmerAggregate-> warmUp () в /var/www/ror3/app/bootstrap.php.cache:2641 Symfony \ Component \ HttpKernel \ Kernel-> initializeContainer () в / var / www / ror3 / app / bootstrap. php.cache: 2411 Symfony \ Component \ HttpKernel \ Kernel-> boot () в /var/www/ror3/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:70 Symfony \ Bundle \ FrameworkBundle \ Console \ Application-> doRun () в /var/www/ror3/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:120 Symfony \ Component \ Console \ Application-> run () в
/ Вар / WWW / ror3 / приложение / консоль: 27

Solutions Collecting From Web of "Кэш Symfony 2.7: команда clear проверяет каждое подключение к базе данных"

Doctrine пытается определить версию платформы базы данных.

Вы можете избежать этого поведения, добавив в конфигурацию DBAL конфигурации Doctrine версию сервера. Из документа:

Параметр server_version был добавлен в Doctrine DBAL 2.5, который используется DoctrineBundle 1.3. Значение этой опции должно соответствовать вашей версии сервера базы данных (используйте команду postgres -V или psql -V, чтобы найти версию PostgreSQL и mysql -V для получения вашей версии MySQL).

Если вы не определяете этот параметр и еще не создали свою базу данных, вы можете получить ошибки PDOException, потому что Doctrine будет пытаться угадать версию сервера базы данных автоматически, и ни один из них не доступен.

В качестве примера:

 #config.yml doctrine: dbal: ... server_version: 5.6 

Надеюсь, что эта помощь