URL соединения с базой данных Doctrine2 (Symfony4) через сокет

Мне трудно получить соединение с базой данных для работы с форматом mysql url, который используется в Symfony4 с doctrine2.

Вот что я пытаюсь сделать:

mysql://dbusername:dbpassword@unix_socket(/path/to/socket)/dbname

Что я делаю неправильно? Пожалуйста, порекомендуйте. В документации Doctrine2 не ясно формат для подключения через сокет.

2

Решение

Я также столкнулся с этой проблемой при попытке использовать облачную платформу Google SQL для MySQL, которая требует использования локального сокета Unix.

Каждая часть URL не является обязательной, она имеет вид:

<type>://[user[:password]@][host][:port][/db][?param_1=value_1&param_2=value_2...]

Так что для сокета mysql unix, если вам нужно указать имя пользователя и пароль, вы можете сделать:

mysql://user:[email protected]/db_name/?unix_socket=/path/to/socket

Часть 127.0.0.1 будет игнорироваться.

Вы можете проверить, что это работает через parse_url функция (которая используется доктриной внутри):

php > var_dump(parse_url("mysql://user:[email protected]/db_name/?unix_socket=/path/to/socket"));
php shell code:1:
array(6) {
'scheme' =>
string(5) "mysql"'host' =>
string(9) "127.0.0.1"'user' =>
string(4) "user"'pass' =>
string(8) "password"'path' =>
string(9) "/db_name/"'query' =>
string(27) "unix_socket=/path/to/socket"}
2

Другие решения

  1. придавать форму .env:

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

  1. Запустите команду в корневом каталоге вашего проекта для создания базы данных:

php bin/console doctrine:database:create

  1. Запустите команду для создания схемы, если вы генерируете сущности:

php bin/console doctrine:schema:create

  1. Запустите команду для обновления вашей схемы, которая основана на ваших сущностях:

php bin/console doctrine:schema:update --force

0

По вопросам рекламы [email protected]