5

尝试将 JRuby 1.2.0 和 Rails 2.3.2 与嵌入式 Derby 数据库一起使用。我已将derbytools.jarand复制derby.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”。

4

4 回答 4

2

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

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

于 2009-04-09T16:44:14.267 回答
0

奇怪的是它对我来说很好,在我的 ubuntu 9.04 盒子上:我只使用标准的 ubuntu 包,我的数据库配置是:

development:
 adapter: jdbc
 driver: org.apache.derby.jdbc.EmbeddedDriver
 url: jdbc:derby:[myapp];create=true
于 2009-05-11T09:07:30.757 回答
0

ClientDriver 在 derbyclient.jar 中

于 2009-12-07T16:46:31.357 回答
0

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

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

于 2010-01-27T23:51:47.603 回答