1

使用 Rails 连接时,如何使用 tnsnames.ora 中的数据库连接信息?

我尝试将 database.yml 中的database:orhost:字段设置为 SID,但均未成功。

我验证了sqlplus可以连接数据库,所以tnsnames.ora是正确的。

如果有帮助的话,我在 Rails 3 上使用 DataMapper。

4

2 回答 2

1

我想我们几天前在#datamapper 中进行了交谈。Sqlplus 是一个 Oracle 软件,它与我认为是他们的负载平衡系统的接口。

DataMapper 假定存储库和数据存储之间存在一对一的映射。通常这意味着您假设负载平衡是在数据存储端处理的(例如 mysql 或 postgres 集群)。

但是,如果可以读取与每个存储库关联的每个数据存储的负载读数(即编写您自己的小负载平衡路由器)。

我工作的公司正是以这种方式使用 DataMapper 存储库(用于记录的可分离性,而不是用于负载平衡)。

它很简单:

DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
于 2011-01-23T19:32:04.640 回答
0

在我自己对此大惊小怪几个小时后,我发现答案是:

# 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 中尝试了相同的操作。有效。

于 2013-03-14T21:03:35.820 回答