6

我很难让数据库连接与 Symfony4 w/教义 2 中使用的 mysql url 格式一起工作。

这是我正在尝试做的事情:

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

我究竟做错了什么?请指教。Doctrine2 文档并不清楚通过套接字连接的格式。

4

2 回答 2

9

在尝试使用需要使用本地 unix 套接字的 mysql 的谷歌云平台 SQL 时,我也遇到了这个问题。

URL 的每一部分都不是强制性的,它的形式是:

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

所以对于一个mysql unix socket,如果你需要指定用户和密码,你可以这样做:

mysql://user:password@127.0.0.1/db_name/?unix_socket=/path/to/socket

127.0.0.1 部分将被忽略。

您可以通过该parse_url函数测试它是否有效(由教义内部使用):

php > var_dump(parse_url("mysql://user:password@127.0.0.1/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"
}
于 2018-03-15T16:06:12.880 回答
-4
  1. 配置.env

DATABASE_URL=mysql://root:root@127.0.0.1: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

于 2018-02-05T19:59:49.047 回答