使用 Rails 连接时,如何使用 tnsnames.ora 中的数据库连接信息?
我尝试将 database.yml 中的database:
orhost:
字段设置为 SID,但均未成功。
我验证了sqlplus可以连接数据库,所以tnsnames.ora是正确的。
如果有帮助的话,我在 Rails 3 上使用 DataMapper。
使用 Rails 连接时,如何使用 tnsnames.ora 中的数据库连接信息?
我尝试将 database.yml 中的database:
orhost:
字段设置为 SID,但均未成功。
我验证了sqlplus可以连接数据库,所以tnsnames.ora是正确的。
如果有帮助的话,我在 Rails 3 上使用 DataMapper。
我想我们几天前在#datamapper 中进行了交谈。Sqlplus 是一个 Oracle 软件,它与我认为是他们的负载平衡系统的接口。
DataMapper 假定存储库和数据存储之间存在一对一的映射。通常这意味着您假设负载平衡是在数据存储端处理的(例如 mysql 或 postgres 集群)。
但是,如果可以读取与每个存储库关联的每个数据存储的负载读数(即编写您自己的小负载平衡路由器)。
我工作的公司正是以这种方式使用 DataMapper 存储库(用于记录的可分离性,而不是用于负载平衡)。
它很简单:
DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
在我自己对此大惊小怪几个小时后,我发现答案是:
# WORKS
development:
adapter: oracle
host: devdb
username: user
password: pwd
我在安装了 32 位和 64 位常规 Oracle 客户端的 Win7 上使用 Rails 3.2.1、DM 1.2.0。
在此过程中我发现了一件非常重要的事情:您必须在 database.yml 的每个 mod 之间重新启动 rails 开发服务器以获取更改。 我浪费了很多时间不知道这一点。出于某种原因,DataMapper 设置没有像开发服务器那样在此处获取更改。
历史:
有人告诉我答案是这样的(另一家公司的另一位开发人员在 Windows 上使用 JRuby):
# DID NOT WORK
development:
adapter: oracle
database: user/pwd@devdb
这对我不起作用,我怀疑答案是使用冒号(基于DataMapper.setup
语法):
# DID NOT WORK
development:
adapter: oracle
database: user:pwd@devdb
这也不起作用,因此我在 IRM 中测试了手动连接并研究了来自DataMapper.setup
. 它将 SID 放入host
并没有指示database
,因此我在 database.yml 中尝试了相同的操作。有效。