symfony2(doctrine)中的Oracle数据库错误。 parameters.yml设置正确吗?

时间:2014-11-15 03:06:04

标签: oracle symfony doctrine-orm

这是他们为数据库提供的信息

HOST: <ip>
PORT: <port>
DB NAME: <name>
DB USER : <user>
DB PASSWORD: <password>
SERVICE: <service name>
CHARSET: WE8MSWIN1252

我的parameters.yml看起来像这样

parameters:
    database_driver: oci8
    database_host: <ip>
    database_port: <port>
    database_name: <name>
    database_user: <user>
    database_password: <password>
    database_service: true
    database_charset: WE8MSWIN1252

我的猜测是我缺少服务名称,但我不知道如何设置它,因为database_service只接受布尔值。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

Checkout getEasyConnectionString方法(就我所知,它在以前的版本od doctrine中被称为不同。)。根据这个,你有两个选择:

  1. 使用单独的参数配置连接。
  2. 您的parameters.yml文件缺少database_servicename参数。

    如此完整的parameters.yml文件:

    parameters:
        database_driver: oci8
        database_host: <ip>
        database_port: <port>
        database_name: <name>
        database_user: <user>
        database_password: <password>
        database_service: true
        database_servicename: <servicename>
        database_charset: WE8MSWIN1252
    

    您需要修改config.yml,因为它可能没有设置所有参数。

    <强> config.yml:

    # Doctrine Configuration
    doctrine:
        dbal:
            driver: %database_driver%
            host: %database_host%
            port: %database_port%
            dbname: %database_name%
            user: %database_user%
            password: %database_password%
            charset: %database_charset%
            service: %database_service%  #this you don't have probably
            servicename: %database_servicename% #this you don't have probably
    
    1. 将整个dsn字符串作为dbname参数传递
    2. 您的parameters.yml文件:

      parameters:
          database_driver: oci8
          database_user: <user>
          database_password: <password>
          database_charset: WE8MSWIN1252
          database_name: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))