0

在我工作的 Symfony2 项目中,我想在 config.yml / parameters.yml 文件中配置我的连接以指向他们稍后将安装的 Oracle 数据保护数据库。事情是,他们告诉我们:这是连接器:

jdbc:oracle:thin@(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=some.primary.host)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=some.secondary.host)(PORT=1521))
(LOAD_BALANCE=off)
(FAILOVER=on)
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=SOMESERVICENAME))
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 120)(DELAY = 5))
) 

由于有 2 个地址,我找不到解决方法。我们的站点在 Windows 7 上,在本地我有一个 Apache2.4 和 PHP 5.4,以及一个用于 12c 的 Oracle 即时客户端。现在,我们使用 Symfony2 的常用配置连接到当前基础,在 .yml 文件中包含主机:用户:变量等。我们的 test / preprod / prod 环境都是 linux。

我试图阅读很多东西来了解它是如何工作的,所以我继续阅读教义文档,并且我还点击了指向 Oracle 命名方法的链接。我还阅读了 Symfony2 教义配置页面。我还不能发布超过 2 个链接,对不起。

然后我发现有些人在谈论像这样的教义类​​ https://github.com/symfony/symfony/issues/5106和这个http://blog.ineat-conseil.fr/2014/07/configurer-教义-dbal-avec-oracle/

所以,我从这一切中得到的是:

  • 在 .yml 文件中,连接中的从属和主控可能不是我想要的,但我不确定 hteir 的目的,所以也许是这样。
  • 在 Doctrine\DBAL\Driver\OCI8\OCI8Connection 类中,我清楚地看到使用 ADDRESS_LIST 构建的连接字符串仅包含一个 ADDRESS

现在,我想到了两件事:

  • 删除教义,但目前这将非常困难
  • 扩展(或重写?)我需要的类或类似的东西,但这似乎很复杂

我试图为 .yml 文件中的“dbname”属性提供我在特定位置创建的 tsnames.ora 中的服务名称的值,并将 TNS_ADMIN env 变量放到该位置,但是它没用(我把它放在系统变量中,而不是用户变量中)。

所以,也许这是微不足道的事情,但我有点迷路了。

任何帮助将不胜感激。

干杯:)

4

1 回答 1

1

好吧,事实证明,解决方案是将连接字符串直接放入 dbname : database_host: false 并将 host 参数设置为 false : database_name: '(DESCRIPTION=…'

于 2016-05-07T08:19:06.637 回答