Мне трудно получить соединение с базой данных для работы с форматом mysql url, который используется в Symfony4 с doctrine2.
Вот что я пытаюсь сделать:
mysql://dbusername:dbpassword@unix_socket(/path/to/socket)/dbname
Что я делаю неправильно? Пожалуйста, порекомендуйте. В документации Doctrine2 не ясно формат для подключения через сокет.
Я также столкнулся с этой проблемой при попытке использовать облачную платформу Google SQL для MySQL, которая требует использования локального сокета Unix.
Каждая часть URL не является обязательной, она имеет вид:
<type>://[user[:password]@][host][:port][/db][?param_1=value_1¶m_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"}
.env
:DATABASE_URL=mysql://root:[email protected]:3306/database_name
php bin/console doctrine:database:create
php bin/console doctrine:schema:create
php bin/console doctrine:schema:update --force