symfony2(doctrine)中的Oracle数据库错误.参数.yml 设置是否正确



这是他们给我的DB信息

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

我的参数.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只接受布尔值。

提前谢谢你!

Checkout getEasyConnectionString 方法(据我所知,它在以前的doctrine版本中有不同的称呼。根据这一点,您有两种选择:

  1. 使用单独的参数配置连接。

您的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参数

您的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>)))

最新更新