0

我开始了一个 Symfony 4.3 项目,我必须为这个项目使用 Oracle 11g 数据库。但是,Symfony 的文档并没有提供足够清晰的主题,尤其是连接到 oracle 数据库的配置。我试图解决这个问题已经快 3 天了,但我什么也没找到。

//.env

DATABASE_URL=mysql://user:pass@127.0.0.1:3306/the_spacebar
DATABASE_CUSTOMER_URL=pdo_oci://user:pass@localhost:1521/XE

//doctrine.yaml

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                # configure these for your database server
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci

                url: '%env(resolve:DATABASE_URL)%'

            customer:
                # configure these for your database server
                driver: 'pdo_oci'
                server_version: ~
                charset: AL32UTF8
                default_table_options:
                    charset: AL32UTF8
                    collate: ~

                url: '%env(resolve:DATABASE_CUSTOMER_URL)%'

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    Main:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Main'
                        prefix: 'App\Entity\Main'
                        alias: Main
            customer:
                connection: customer
                mappings:
                    Customer:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Customer'
                        prefix: 'App\Entity\Customer'
                        alias: Customer

错误是:

驱动程序中发生异常:SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12505: TNS:listener 目前不知道连接描述符中给出的 SID
(ext\pdo_oci\oci_driver.c:634)

4

1 回答 1

0

我解决了我的问题如下:

// .env
DATABASE_URL=mysql://user:pass@127.0.0.1:3306/dbname
DATABASE_CUSTOMER_URL=//user:pass@localhost:1521/XE

// doctrine.yaml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                # configure these for your database server
                url: '%env(DATABASE_URL)%'
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4

            customer:
                # configure these for your database server
                url: '%env(DATABASE_CUSTOMER_URL)%'
                driver: 'pdo_oci'
                server_version: ~
                charset: AL32UTF8

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    Hand:
                        is_bundle: false
                        type: annotation
                        dir: '% kernel.project_dir%/src/Entity/Main'
                        prefix: 'App\Entity\Main'
                        Alias: Main
            customer:
                connection: customer
                mappings:
                    Customer:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Customer'
                        prefix: 'App\Entity\Customer'
                        alias: Customer
于 2019-07-18T08:07:48.270 回答