Php symfony pdo_pgsql原则:数据库:创建不使用参数

Php symfony pdo_pgsql原则:数据库:创建不使用参数,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我使用Symfony 3.1.5,我正在尝试运行一个简单的 php bin/console原则:数据库:创建 如中所述 My参数.yml parameters: database_host: hhvm_db_1 database_port: 5432 database_name: dbname database_user: dbuser database_password: mypassword doctrine: dbal: d

我使用Symfony 3.1.5,我正在尝试运行一个简单的

php bin/console原则:数据库:创建

如中所述

My
参数.yml

parameters:
    database_host: hhvm_db_1
    database_port: 5432
    database_name: dbname
    database_user: dbuser
    database_password: mypassword
doctrine:
    dbal:
        driver:   pdo_pgsql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
我的
config.yml

parameters:
    database_host: hhvm_db_1
    database_port: 5432
    database_name: dbname
    database_user: dbuser
    database_password: mypassword
doctrine:
    dbal:
        driver:   pdo_pgsql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
我收到以下错误消息:

  [Doctrine\DBAL\Exception\DriverException]
  An exception occured in driver: [32681]: could not translate host name "hhvm_db_1
  port=5432 dbname=postgres " to address: Name or service not known



  [Doctrine\DBAL\Driver\PDOException]
  [32681]: could not translate host name "hhvm_db_1 port=5432 dbname=postgres " to a
  ddress: Name or service not known



  [PDOException]
  [32681]: could not translate host name "hhvm_db_1 port=5432 dbname=postgres " to a
  ddress: Name or service not known
这个错误消息看起来很奇怪,因为当我在parameters.yml中指定了一个不同的数据库时,它的状态是
dbname=postgres
。我试图在config.yml中直接更改它,但这并没有改变任何事情。数据库主机和端口取自my parameters.yml

我认为条令只是对dbname使用默认参数,因为出于某种原因它无法解析我的参数。这里有什么问题


我不认为这是真正的问题,但我正在使用hhvm在docker容器中运行symfony<上面错误消息中的code>hhvm_db_1是运行Postgres的第二个容器。当我用vanilla PHP检查连接时,它可以工作,我可以连接到数据库。因此,可以从我的web容器访问主机。

我发现我的系统在包含空格而不是分号的dsn字符串方面存在问题

不起作用:

pgsql:host=hhvm_db_1 port=5432 dbname=postgres
工作正常:

pgsql:host=hhvm_db_1;port=5432;dbname=postgres

这也解决了我最初的问题。PDOPgSQL的DBAL驱动程序正在使用postgres作为默认数据库来检查连接。

是否可能包含另一个可能覆盖dbname的配置文件?这是一个全新的symfony安装。只有一个
parameters.yml
和用于不同环境(测试、开发、生产)的配置文件。它们都不包含其他数据库配置。但这就是我要求调试console脚本的原因。IIRC,包括命令标志
-vvv
将日志记录增加到最大级别,这有助于调试。感谢您的帮助。这会同时输出堆栈跟踪,但它并不能真正产生有见地的结果。