2

symfony2 プロジェクトをデプロイしていますが、リモート mysql サーバーへのデータベース接続に問題があります。symfony がまだローカルの mysql インスタンスに接続しようとしていて (tcp の代わりにソケットを使用)、正しい設定である parameteres.yml を考慮していないようです。

parameters.yml

parameters:
  database_driver:   pdo_mysql
  database_host:     subdomain-example.dotcloud.net
  database_port:     44569
  database_name:     db_platform
  database_user:     root
  database_password: [intentionally hidden]

config.yml

imports:
  - { resource: parameters.yml }

doctrine:
  dbal:
    default_connection:       default
    connections:
        default:
            driver:           %database_driver%
            dbname:           %database_name%
            user:             %database_user%
            password:         %database_password%
            host:             %database_host%
            port:             %database_port%
            charset:          UTF8

エラー スタック トレース(キャッシュをクリアしようとするとコンソールに表示されるか、http ブラウザーに表示されます)

PDOException: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
in /var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 2336
at PDO->__construct('mysql:dbname=db_platform', 'root', '****') in /var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 2336
at appDevDebugProjectContainer->getPdoService() in /var/www/Symfony/app/bootstrap.php.cache line 209
at Container->get('pdo') in /var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 3027
at appDevDebugProjectContainer->getSession_Handler_PdoService() in /var/www/Symfony/app/bootstrap.php.cache line 209
at Container->get('session.handler.pdo') in /var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 3053
at appDevDebugProjectContainer->getSession_Storage_NativeService() in /var/www/Symfony/app/bootstrap.php.cache line 209
at Container->get('session.storage.native') in /var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php line 3014
at appDevDebugProjectContainer->getSessionService() in /var/www/Symfony/app/bootstrap.php.cache line 209
at Container->get('session') in /var/www/Symfony/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php line 52
........

上記のように、構成ファイルに "localhost" がなく、エラー スタック トレースでは、コンストラクト メソッドがホストとポートのデータを PDO クラスに渡していません。

PDO->__construct('mysql:dbname=db_platform', 'root', '****')

キャッシュフォルダーは手動で削除済みです。

composer.json

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.1.0",
    "doctrine/orm": ">=2.3.0,<2.4.*-dev",
    "doctrine/doctrine-bundle": ">=2.1",
    "doctrine/mongodb": "1.0.1",
    "doctrine/mongodb-odm-bundle": "3.0.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.1.*",
    "symfony/swiftmailer-bundle": "2.1.*", 
    "symfony/monolog-bundle": "2.1.*",
    "sensio/distribution-bundle": "2.1.*",
    "sensio/framework-extra-bundle": "2.1.*",
    "sensio/generator-bundle": "2.1.*",
    .... more
},

なにか提案を?

前もってありがとう、マウロ

4

2 に答える 2

6

私は問題を理解することができました、それはconfig.ymlのPDOサービス引数でした:

services:
    pdo:
        class: PDO
        arguments:
            - "mysql:host=%database_host%;port=%database_port%;dbname=%database_name%"
            - %database_user%
            - %database_password%

ホストとポートのパラメーターを追加する必要がありました。

返信ありがとうございます。
マウロ

于 2013-01-14T03:48:22.493 に答える