2016-11-02 22 views
2

私はsymfonyの3.1.5を使用して、私はそれがdocumentationに記載されているように、単純なsymfonyのPDO_PGSQLの教義:データベース:パラメータ

php bin/console doctrine:database:create

を実行しようとしていますを使用していません作成します。

マイ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 

Iながら、それがdbname=postgresを述べたため、エラーメッセージが、私には奇妙に見えます私の中に別のデータベースが指定されているparameters.yml。私はconfig.ymlで直接変更しようとしましたが、それは何も変わりません。データベースのホストとポートは私のparameters.ymlから取得されます。

doctrineは何らかの理由で自分のパラメータを解析できないので、dbnameのデフォルトパラメータを使用しているとします。何が問題なの?

これは実際には問題ではないと思いますが、hhvmを使用したドッカーコンテナでsymfonyを実行しています。上記のエラーメッセージのhhvm_db_1は、Postgresを実行している2番目のコンテナです。私はバニラPHPとの接続をチェックすると動作し、私はデータベースに接続することができます。したがって、ホストは私のWebコンテナからアクセス可能です。

+0

dbnameを上書きする可能性のある別の設定ファイルを含めることは可能でしょうか? –

+0

これはsymfonyの新鮮なインストールです。異なる環境(test、dev、prod)の 'parameters.yml'と設定ファイルは1つだけです。いずれも追加のデータベース構成を保持していません。しかし、それが私がコンソールスクリプトをデバッグする方法を尋ねた理由です。 – Chrisissorry

+0

IIRC(コマンドフラグ '-vvv'を含む)は、デバッグに役立つ可能性がある最大レベルまでログを増加させます。 –

答えて

1

システムでセミコロンではなくスペースを含むdsn文字列に問題があることがわかりました。

は動作しません:

pgsql:host=hhvm_db_1 port=5432 dbname=postgres 

作品罰金:

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

私の最初の問題は、そのことによって解決されました。 PDOPgSQLのDBALドライバは、デフォルトのデータベースとしてpostgresを使用して接続をチェックしています。

関連する問題