如何在连接Rails时使用tnsnames.ora中的数据库连接信息?
我尝试将database.yml中的database:
或host:
字段设置为SID,但都没有效果。
我验证了sqlplus可以连接到数据库,所以tnsnames.ora是正确的。
如果有帮助的话,我在Rails 3上使用DataMapper。
答案 0 :(得分:1)
我想我们几天前在#datamapper发言。 Sqlplus是一个Oracle软件,它与我认为的负载均衡系统接口。
DataMapper假定存储库和数据存储区之间存在1对1的映射。通常这意味着您假设负载平衡处理数据存储区(例如mysql或postgres集群)。
然而,没有什么能阻止某人编写一个允许DataMapper在一组存储库之间进行热交换的库,如果有可能读取与每个存储库关联的每个数据存储上的负载(即写下你的自己的小负载平衡路由器)。
我工作的公司正是以这种方式使用DataMapper存储库(用于记录的可分离性,而不是负载平衡)。
它很简单:
DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
答案 1 :(得分:0)
经过几个小时的烦恼,我发现答案是:
# WORKS
development:
adapter: oracle
host: devdb
username: user
password: pwd
我在Win7上使用Rails 3.2.1,DM 1.2.0,同时安装了32位和64位常规Oracle客户端。
我在此过程中发现了一件非常重要的事情:你必须在每个mod.yml mod之间重新启动rails dev服务器以获取更改。我浪费了很多时间不知道这一点。出于某种原因,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中尝试了相同的操作。它奏效了。