Estoy configurando una aplicación Symfony 5.2, usando doctrine/doctrine-bundle 2.4 y doctrine/orm 2.9. Mi archivo de configuración doctrine.yaml se ve así:

doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL)%'
        driver: 'pdo_mysql'
        server_version: '5.7'
        # IMPORTANT: You MUST configure your server version,
        # either here or in the DATABASE_URL env var (see .env file)
        #server_version: '13'
    orm:
        auto_generate_proxy_classes: true
        naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

El problema es que cuando ejecuto doctrine:fixtures:load, obtengo el siguiente resultado:

In AbstractPostgreSQLDriver.php line 102:

  An exception occurred in driver: could not find driver


In Exception.php line 18:

  could not find driver


In PDOConnection.php line 39:

  could not find driver

Parece que Doctrine está intentando usar el controlador Postgre, aunque he especificado MySQL. ¿Hay otro lugar donde necesito configurar esto? ¿Si es así, cómo?

===

EDITAR: Parece que DATABASE_URL no está disponible dentro de mi contenedor Docker, que probablemente sea la fuente del problema. Verifiqué que DATABASE_URL está definido en mi archivo .env y que mi archivo .env está en la misma carpeta que mi archivo docker-compose.yml. Además, tengo una configuración como esta para la variable de entorno en ese archivo docker-compose:

environment:
  - DATABASE_URL

Así que no estoy muy seguro de qué está mal aquí.

0
Patrick 10 jul. 2021 a las 13:53

3 respuestas

La mejor respuesta

Creo que tiene un DATABASE_URL incorrecto en su archivo .env. Compruebe si comienza con mysql://.

1
jDoe 10 jul. 2021 a las 12:02

Creo que Symfony usa el paquete dotenv para cargar los valores de .env a la superglobal S_ENV. Necesita depurar si su dotenv (y hay un .env en su proyecto y no .env.local o .env.dist) está cargado correctamente.

1
Hisham 10 jul. 2021 a las 17:29

A veces me ha sucedido cuando estaba comenzando, generalmente al clonar un proyecto de Github que tiene un archivo .env predeterminado creado por Doctrine cuando se instala a través del compositor que, de manera predeterminada, Doctrine usa la URL de PostgreSQL.

Vea cuántos archivos .env tiene documentado y estoy seguro de que alguien anula su conexión URL.

Vea esta publicación de StackOverflow para conocer la diferencia entre los archivos .env. * ¿Cuál es la diferencia entre .env.local y .env.development.local

1
Manuel 10 jul. 2021 a las 21:35