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:
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):
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 ❤️!
Conviertete en un programador más sociable