php - clean - Caché Symfony 2.7: el comando borrar comprueba cada conexión a la base de datos
clear cache symfony 4 (1)
Acabo de actualizar a symfony 2.7 y tengo un comportamiento molesto.
Algunas conexiones en mi config.yml son opcionales, y describen bases de datos extranjeras que no están destinadas a ser utilizadas en cada instancia de prod.
Al hacer un caché: claro, parece que ahora se verifican todas las conexiones, incluso si no quiero que estén activas en un servidor en particular.
Al configurar la opción --no-warmup, el problema ocurre la mitad del tiempo
php app/console cache:clear --env=prod --no-warmup --verbose
[Doctrine / DBAL / Exception / ConnectionException]
Se produjo una excepción en el controlador: SQLSTATE [42000] [1049] Base de datos desconocida ''bal_syncrho_database''Trazado de excepción: () en /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:103 Doctrine / DBAL / Driver / AbstractMySQLDriver-> convertException () en / var / www / ror3 / vendor / doctrine / dbal / lib / Doctrine / 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 () en /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:360 Doctrine / DBAL / Connection-> connect () en /var/www/ror3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:429 Doctrine / DBAL / Connection-> getDatabasePlatformVersion () at / var / www / ror3 / proveedor / doctrina / dbal / lib / Doctrine / DBAL / Connection.php: 389 Doctrine / DBAL / Connection-> detectDatabasePlatform () en /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 () en /var/www/ror3/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:616 Doctrine / ORM / Mapping / ClassMetadataFactory-> completeIdGeneratorMapping () en /var/www/ror3/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:174 Doctrine / ORM / Mapping / ClassMetadataFactory-> doLoadMetadata () at / var / www /ror3/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:332 Doctrine / Common / Persistence / Mapping / AbstractClassMetadataFactory-> loadMetadata () en / var / www / ror3 / vendor / doctrine / orm / lib / Doctrine / ORM / Mapping / ClassMetadataFactory.php: 78 Doctrine / ORM / Mapping / ClassMetadataFactory-> loadMetadata () en / var / www / ror3 / vendor / doctrine / common / lib / Doctrine / Common / Persistence / Mapping /AbstractClassMetadataFactory.php:216 Doctrine / Common / Persistence / Mapping / AbstractClassMetadataFactory-> getMetadataFor () en / var / www / ror3 / vendor / doctrine / common / lib / Doctrine / Common / Persi stence / Mapping / AbstractClassMetadataFactory.php: 115 Doctrine / Common / Persistence / Mapping / AbstractClassMetadataFactory-> getAllMetadata () en /var/www/ror3/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php : 69 Symfony / Bridge / Doctrine / CacheWarmer / ProxyCacheWarmer-> warmUp () en /var/www/ror3/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48 Symfony / Component / HttpKernel / CacheWarmer / CacheWarmerAggregate-> warmUp () en /var/www/ror3/app/bootstrap.php.cache:2641 Symfony / Component / HttpKernel / Kernel-> initializeContainer () en / var / www / ror3 / app / bootstrap. php.cache: 2411 Symfony / Component / HttpKernel / Kernel-> boot () en /var/www/ror3/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:70 Symfony / Bundle / FrameworkBundle / Console / Application-> doRun () en /var/www/ror3/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:120 Symfony / Component / Console / Application-> run () en
/ var / www / ror3 / app / console: 27
Doctrine está tratando de determinar la versión de la plataforma de la base de datos.
Puede evitar este comportamiento al agregar en Doctrine DBAL Configuration la versión del servidor. Del doc:
La opción versión_servidor se agregó en Doctrine DBAL 2.5, que es utilizada por DoctrineBundle 1.3. El valor de esta opción debe coincidir con la versión del servidor de su base de datos (utilice el comando postgres -V o psql -V para encontrar su versión de PostgreSQL y mysql -V para obtener su versión de MySQL).
Si no define esta opción y aún no ha creado su base de datos, puede recibir errores de PDOException porque Doctrine intentará adivinar la versión del servidor de la base de datos automáticamente y no hay ninguno disponible.
Como ejemplo:
#config.yml
doctrine:
dbal:
...
server_version: 5.6
Espero que esto ayude