2009-04-08 49 views
5

试图在嵌入式Derby数据库中使用JRuby 1.2.0和Rails 2.3.2。我已经复制derbytools.jarderby.jar$RUBY_HOME/lib,但rake db:migrate仍然给:在JRuby on Rails上使用嵌入式Derby

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

Aaaand ......我打了一个预感,并理解了它。所以,我会在这里发布这个以防其他人遇到同样的问题。

几乎所有的文档,我发现网上有德比以下database.yml配置:

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'。

回答

2

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

当您使用嵌入式德比时,ActiveRecord-JDBC中还存在一个微妙的错误 - 如果您不给它一个用户名和密码,则什么都不起作用。我追踪了这个错误的原因,并且正在提交补丁,但是如果遇到同样的问题,请告诉我,我会在这里发布代码。仅使用标准的Ubuntu软件包和我的数据库配置 IM:

+0

+1:帮了我很多! – Rekin 2010-12-09 12:09:32

0

奇怪它的工作对我很好,在我的Ubuntu 9.04盒

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

的ClientDriver是derbyclient.jar中

0

进一步对唐的回答,当使用没有用户名/密码的ClientDriver时,我得到这个错误:The driver encountered an error: java.sql.SQLNonTransientConnectionException: Password length (0) is outside the range of 1 to 255.

在database.yml中设置用户名/密码修复了问题!