首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Derby的ActiveRecord如何设置Derby模式

使用Derby的ActiveRecord如何设置Derby模式
EN

Stack Overflow用户
提问于 2012-07-22 08:38:29
回答 1查看 807关注 0票数 1

请看下面的“更新”,我现在知道的是问题的症结所在。

我有一个遗留的Derby数据库,我想创建一个与之交互的Rails应用程序。

我使用的是RVM,所以下面是我采取的步骤:

代码语言:javascript
复制
1. rvm install jruby (installed 1.6.7.2)

2. rvm use jruby

3. gem install rails 

4. rails new myapp

5. add "gem 'activerecord-jdbcderby-adapter'" to Gemfile of new rails app

6. bundle

7. copied my derby db folder (named 'perm') under db in the rails app

8. changed database.yml as follows:

  development:
    adapter: jdbcderby
    database: db/perm

然后,我创建了一个模型文件,并使用set_table_name将其设置为其中一个表名,当我运行rails c时,我得到了该表不存在的异常。

当我这样做时,我也会在控制台中

代码语言:javascript
复制
ActiveRecord::Base.connection.tables

唯一返回的表是"schema_migrations“。

我知道数据库没有问题,因为我可以连接到这个完全相同的副本,并使用SquirrelSQL查看所有的表。此外,rails应用程序以某种方式连接,因为当我打开控制台时,当控制台正在运行时,我无法使用SquirrelSQL连接到相同的实例,反之亦然。

关于活动记录看不到表的原因,有人有什么建议吗?

更新:

这个问题与derby如何将表“组织”到同一文件中的多个“模式”有关。当我从rails创建一个新表(即迁移)时,该表以"SA“模式结束。我的所有遗留表都在"APP“模式中(也许我可以移动它们,但如果可以避免it...other应用程序崩溃,我不想这样做)。因此,当我以这种方式从rails访问数据库时,就好像只有"SA“模式存在。如何告诉Rails‘使用’App‘模式(早先我尝试在表名前加上前缀,但没有成功)?

我相应地重新命名了这个问题。

更新#2:

显然,jdbcderby gem支持"schema“设置。在猜测中,我尝试将我的database.yml更改为以下内容:

代码语言:javascript
复制
development:
  adapter: jdbcderby
  database: db/perm
  schema: app (also tried APP)

当我有app (或APP)模式设置时,当我在控制台中执行ActiveRecord::Base.connection.tables时,我会从app模式中获得表的列表(列表中显示的表名都是小写的,没有模式名)。

但是我仍然在访问这些表时遇到了问题。当我在现有的表上创建一个模型文件并试图访问它时,我得到一个JDBCError:“模式'SA‘不存在”。我尝试了各种set_table_name调用,但都没有成功。

据我所知,我的数据库没有任何异常。但目前还没有关于如何做到这一点的信息。我是不是世界上唯一一个尝试在Rails中使用遗留Derby数据库的人?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-23 02:20:00

数据库名称'db/perm‘是相对于您当前的工作目录进行解释的,该目录可能不是您认为的那个目录。尝试(1)在硬盘中搜索文件'derby.log',该文件可能是在您的rails应用程序的实际当前工作目录中创建的,或者(2)指定到您的derby数据库的绝对文件路径,而不是相对文件路径。

如果问题出在模式上,Derby支持SET schema语句:http://db.apache.org/derby/docs/10.8/ref/rrefsqlj32268.html

如果不显式设置模式,它将默认使用连接所用的用户名,因此您也可以通过以所需的用户名登录来间接设置模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11596929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档