【问题标题】:Using embedded Derby with JRuby on Rails将嵌入式 Derby 与 JRuby on Rails 结合使用
【发布时间】:2009-04-08 05:33:06
【问题描述】:

尝试将 JRuby 1.2.0 和 Rails 2.3.2 与嵌入式 Derby 数据库一起使用。我已将derbytools.jarderby.jar 复制到$RUBY_HOME/lib,但rake db:migrate 仍然给出:

The driver encountered an error: 
    cannot load Java class org.apache.derby.jdbc.ClientDriver

Aaaand... 我预感到并想通了。因此,我将在此处发布此内容,以防其他人遇到与我相同的问题。

我在网上找到的几乎所有文档都有以下database.yml 的 Derby 配置:

development:
    adapter: jdbc
    driver: org.apache.derby.jdbc.ClientDriver
    url: jdbc:derby:[db];create=true
    username: xxx
    password: xxx

这可能适用于客户端/服务器设置,但对于嵌入式 Derby 设置,您需要:

development:
    adapter: jdbc
    driver: org.apache.derby.jdbc.EmbeddedDriver
    url: jdbc:derby:[db];create=true
    username: xxx
    password: xxx

注意“EmbeddedDriver”,而不是“ClientDriver”。

【问题讨论】:

    标签: ruby-on-rails jruby derby


    【解决方案1】:

    要回答,因为我讨厌在我的个人资料中看到那个红块。

    当您使用嵌入式 derby 时,ActiveRecord-JDBC 中还有一个微妙的错误——如果您不给它一个用户名和密码,那么什么都不起作用。我已经找到了这个错误的原因,并且正在努力提交一个补丁,但是如果你遇到了同样的问题,请告诉我,我会在这里发布代码。

    【讨论】:

      【解决方案2】:

      在我的 ubuntu 9.04 机器上,它对我来说效果很好: 我只使用标准的 ubuntu 包,我的数据库配置是:

      development:
       adapter: jdbc
       driver: org.apache.derby.jdbc.EmbeddedDriver
       url: jdbc:derby:[myapp];create=true
      

      【讨论】:

        【解决方案3】:

        ClientDriver 在 derbyclient.jar 中

        【讨论】:

          【解决方案4】:

          除了 Don 的回答,我在使用没有用户名/密码的 ClientDriver 时遇到此错误:The driver encountered an error: java.sql.SQLNonTransientConnectionException: Password length (0) is outside the range of 1 to 255.

          在 database.yml 中设置用户名/密码解决了这个问题!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-01-14
            • 2014-08-04
            • 1970-01-01
            • 1970-01-01
            • 2010-09-14
            相关资源
            最近更新 更多