Я создал базу данных в MAMP под названием «проект».
В моем файле .env я добавил эту строку:
DATABASE_URL=mysql://root:root@localhost:3306/project
Теперь я хочу бежать
php bin/console doctrine:database:create
Но я получаю сообщение об ошибке:
SQLSTATE[HY000] [2002] No such file or directory
мои конфигурации доктрины:
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
@AlessandroMinoccheri Где мне это найти?
ты про config/packages/doctrine.yaml?
да, именно, пожалуйста, добавьте это
@AlessandroMinoccheri Добавил






Попробуйте это изменить:
url: '%env(resolve:DATABASE_URL)%'
к этому:
url: '%env(DATABASE_URL)%'
Решено!
в файле "config / packages / doctrine.yaml" мне пришлось добавить эту строчку
unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
Это означает изменить это:
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)%'
в
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)%'
Я могу дать вам некоторую предысторию вашей ошибки: если вы используете localhost, это имеет особое значение, и mysql-client lib пытается подключиться через сокет. поскольку ваш сокет не находится в одном из местоположений по умолчанию, вы должны указать dbal точное местоположение. Вы также можете изменить localhost на 127.0.0.1, чтобы принудительно установить TCP-соединение, которое не будет использовать сокет.
@Rufinus Я привязался к использованию 127.0.0.1 вместо localhost, но потом я получил ошибку "Connection failed"
Вы также можете поместить параметр unix_socket в DATABASE_URL вашего файла среды, например. .env.local: DATABASE_URL=mysql://root:root@localhost:3306/dbname?unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock
Что вы также можете попробовать, так это явно установить сервер mysql
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
Получил такую же проблему. Добавлен unix_socket и изменен 127.0.0.1 на localhost, работающий на 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:root@localhost:3306/mydb
Подскажите пожалуйста конфигурацию доктрины?