【问题标题】:Oracle database error in symfony2 (doctrine). Is parameters.yml setup correctly?symfony2(原则)中的 Oracle 数据库错误。 parameters.yml 设置是否正确?
【发布时间】:2014-11-15 19:51:43
【问题描述】:

这是他们给我的数据库信息

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 只接受布尔值。

提前谢谢你!

【问题讨论】:

    标签: oracle symfony doctrine-orm


    【解决方案1】:

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

    【讨论】:

    • ORA-12504: TNS:listener is not given the SERVICE_NAME in CONNECT_DATA 我现在收到此错误,我做错了什么吗?
    • 您使用的是哪个选项?整个 dsn 还是选项 1?
    • 那么您需要验证您的 dsn 字符串是否正确(这是特定于数据库的,所以我的示例中的一个可能不适合您的数据库)
    • 没关系,现在它起作用了,我不知道发生了什么:D
    • 嘿任何人都可以帮助回答我的问题stackoverflow.com/questions/37024817/…
    猜你喜欢
    • 2016-08-27
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2016-07-24
    • 2012-08-27
    • 2022-06-30
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多