How can I connect via Symfony 4 to mySQL database created with MAMP?
17,184
Solution 1
Solved it!
in the file "config/packages/doctrine.yaml" I had to add this line
unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
This means change this:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
into
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
Solution 2
Got the same problem. Added the unix_socket and changed 127.0.0.1 to localhost works on MAMP 5.5.
doctrine.yaml
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
.env
DATABASE_URL=mysql://root:[email protected]:3306/mydb
Solution 3
Try to change this:
url: '%env(resolve:DATABASE_URL)%'
to this:
url: '%env(DATABASE_URL)%'
Solution 4
What you can also try is setting the mysql server expliclitly
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: local_api
user: root
password: null
host: localhost
driver: pdo_mysql
server_version: '5.5' # in case you are using mysql 5.5
Related videos on Youtube
Comments
-
peace_love less than a minuteI created a database in MAMP called "project".
In my
.envfile I added this line:DATABASE_URL=mysql://root:[email protected]:3306/projectNow I want to run
php bin/console doctrine:database:createBut I get an error message:
SQLSTATE[HY000] [2002] No such file or directory
my doctrine configurations:
parameters: # Adds a fallback DATABASE_URL if the env var is not set. # This allows you to run cache:warmup even if your # environment variables are not available yet. # You should not need to change this value. env(DATABASE_URL): '' doctrine: dbal: # configure these for your database server driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci url: '%env(resolve:DATABASE_URL)%' orm: auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true mappings: App: is_bundle: false type: annotation dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App -
Rufinus over 4 yearsI can give you some background on your error: if you uselocalhostit has special meaning and mysql-client lib tries to connect via socket. as your socket is not in one of the default locations you have to give dbal the exact location. You also can changelocalhostto127.0.0.1to enforce a TCP connection, which would not use the socket. -
peace_love over 4 years@Rufinus I tied to use127.0.0.1instead oflocalhostbut then I got the error "Connection failed" -
thi3rry almost 2 yearsYou can also put a unix_socket param in the DATABASE_URL of your environment file e.g.
.env.local:DATABASE_URL=mysql://root:[email protected]:3306/dbname?unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock -
devXen 7 monthsthis worked for me