Aprende a resolver esta excepción de Symfony 6 cuando utilice un motor de base de datos diferente al especificado en la cadena de conexión de la base de datos.

Cómo resolver la excepción de Symfony 6: The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue

Después de lanzar un nuevo proyecto que se va a construir usando el nuevo Symfony 6, obtuve una excepción interesante después de crear el sistema de usuario básico para la aplicación. Esta excepción, está relacionada con el almacenamiento de metadatos que de alguna manera no está actualizado. Esto apareció solo después de usar los siguientes 2 comandos para preparar las migraciones y ejecutarlas:

php bin/console make:migration
php bin/console doctrine:migrations:migrate

En este artículo, te explicaré la causa de esta excepción y cómo evitar que aparezca en tu nuevo proyecto.

Solución de problemas de almacenamiento de metadatos desincronizados

Lo primero que debes hacer es ejecutar el siguiente comando para sincronizar el almacenamiento de metadatos en tu aplicación Symfony:

php bin/console doctrine:migrations:sync-metadata-storage

Ejecutar el comando anterior generará la siguiente salida en su terminal:

Metadata Storage synchronized

Esto debería resolver el problema normalmente, pero en mi caso no fue así . Después de investigar un poco, descubrí que el problema estaba relacionado con la conexión de la cadena de la base de datos en su archivo .env. Este problema es bastante nuevo ya que no me enfrenté a este problema antes. Cuando creé un proyecto de Symfony 5, la conexión de cadena para MySQL 5.7 y MariaDB solía funcionar bien. Sin embargo, en la nueva versión, si usa MariaDB como motor de base de datos en lugar de MySQL, use una cadena de conexión MySQL como la siguiente cuando use MariaDB:

DATABASE_URL="mysql://username:[email protected]:3306/db_name?serverVersion=5.7"

Activará la excepción mencionada. Entonces, para solucionar este problema, necesitaba buscar la versión de la instancia de MariaDB que estoy usando en este momento en mi entorno local (pude determinar la versión gráficamente usando PHPMyAdmin como uso XAMPP, alternativamente puede obtenerla de la CLI):

MariaDB Version PHPMyAdmin

Para obtener más información sobre la cadena de conexión de la base de datos, consulta la documentación oficial de Symfony aquí . Sabiendo esto, pude simplemente cambiar el parámetro serverVersion del parámetro de DATABASE_URL esta manera:

DATABASE_URL="mysql://username:[email protected]:3306/db_name?serverVersion=mariadb-10.4.21"

¡Y ahora se puede acceder al proyecto sin que aparezca esta tediosa excepción cada vez que intento acceder a la base de datos!

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores