Php symfony pdo_pgsql原则:数据库:创建不使用参数
我使用Symfony 3.1.5,我正在尝试运行一个简单的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
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
将日志记录增加到最大级别,这有助于调试。感谢您的帮助。这会同时输出堆栈跟踪,但它并不能真正产生有见地的结果。