【发布时间】:2016-11-02 17:43:14
【问题描述】:
我使用 Symfony 3.1.5,我正在尝试运行一个简单的
php bin/console doctrine:database:create
正如documentation 中所述。
我的parameters.yml
parameters:
database_host: hhvm_db_1
database_port: 5432
database_name: dbname
database_user: dbuser
database_password: mypassword
我的config.yml
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
错误消息对我来说看起来很奇怪,因为它声明 dbname=postgres,而我在 parameters.yml 中指定了不同的数据库。我试图直接在 config.yml 中更改它,但这并没有改变任何事情。数据库主机和端口取自我的 parameters.yml。
我想教义只是使用 dbname 的默认参数,因为它由于某种原因无法解析我的参数。这可能是什么问题?
我认为这不是真正的问题,但我正在使用 hhvm 在 docker 容器中运行 symfony。上述错误消息中的hhvm_db_1 是第二个运行 Postgres 的容器。当我检查与 vanilla PHP 的连接时,它可以工作并且我可以连接到数据库。因此,可以从我的 Web 容器访问主机。
【问题讨论】:
-
您是否可能包含另一个可能会覆盖 dbname 的配置文件?
-
这是一个全新的 symfony 安装。只有一个
parameters.yml和不同环境(测试、开发、产品)的配置文件。它们都没有额外的数据库配置。但这就是我要求调试控制台脚本的原因。 -
IIRC,包括命令标志
-vvv会将日志记录增加到最大级别,这有助于调试。 -
感谢您的帮助。这会同时输出堆栈跟踪,但并不能真正产生有洞察力的东西。
标签: php symfony doctrine-orm