Symfony 4 Doctrine not working from console [2002] No such file or directory

16,320

Solution 1

Please change DB_HOST=localhost to DB_HOST=127.0.0.1

> doctrine/doctrine-bundle

DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}

Solution 2

So i suppose that you showed the whole content of your doctrine.yml.

If so, you might want to consider changing your doctrine.yml as follows: add an additional line in the dbal: section

doctrine:
    dbal:
       driver: 'pdo_mysql'
       server_version: '5.7'
       charset: utf8mb4
       url: '%env(resolve:DATABASE_URL)%'

Watch the last line, beginning with url:, closely.

The 'resolve:" operator looks up DATABASE_URL in your env-Variables and if it is found, it then replaces the expression with its content.

This is a doctrine.yml, that gets auto-generated by symfony.

The 'resolve' operator migth not be needed though. This could potentially work too:

doctrine:
    dbal:
       driver: 'pdo_mysql'
       server_version: '5.7'
       charset: utf8mb4
       url: '%env(DATABASE_URL)%'

This method is proposed in the symfony docs, which might be interesting to read, to understand further configuration of symfony.

Solution 3

My fix is here:

export DATABASE_URL=<value from .env>

And generating SQLs works :)

Share:
16,320
Samuel S. Salazar
Author by

Samuel S. Salazar

Updated on June 04, 2022

Comments

  • Samuel S. Salazar
    Samuel S. Salazar almost 2 years

    I´m working with symfony 4 and this error ocurr when runnning doctrine console commands:

    In AbstractMySQLDriver.php line 108:
    
    An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory  
    

    I think this is because there´s something wrong with the connection but when I run the application it has access to the database without errors, so I can not imagine what is wrong with the connection.

    I was able to continue working by creating manually the database and using

    php bin/console doctrine:schema:create --dump-sql
    

    But this is really unwanted because later when the schema needs to be updated all data would be lost because i would need to re-create the schema instead of updating it.

    The app works normally after executing manually the SQL (easyadmin works fine).

    Here are my configurations:

    .ENV:

    DATABASE_URL=mysql://root:[email protected]:3306/test
    

    doctrine.yaml:

    parameters:
         env(DATABASE_URL): ''
    
    doctrine:
        dbal:
           driver: 'pdo_mysql'
           server_version: '5.7'
           charset: utf8mb4
    

    I tried the drop command just to test and it throwed this:

    In DropDatabaseDoctrineCommand.php line 93:
    
    
    Connection does not contain a 'path' or 'dbname' parameter and cannot be dropped.  
    

    So I add dbname to doctrine.yaml and didn´t worked. I also tried removing the cache, creating a new project, using a remote mysql, and using sqlite but the errors are the same in both cases !!

    Thanks in advance for the help !