2009-04-08 14 views
5

Es wurde versucht, JRuby 1.2.0 und Rails 2.3.2 mit einer eingebetteten Derby-Datenbank zu verwenden. Ich habe derbytools.jar und derby.jar zu $RUBY_HOME/lib kopiert, noch rake db:migrate gibt noch:Verwendung des eingebetteten Derby mit JRuby on Rails

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

Uuuund ... Ich spielte eine Ahnung, und es herausgefunden. Ich poste das hier für den Fall, dass jemand anderes auf dasselbe Problem stößt wie ich.

Fast alle die Dokumentation fand ich hat online die folgende database.yml Konfiguration für Derby:

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

Dies funktioniert wahrscheinlich für eine Client/Server-Konfiguration in Ordnung, aber für einen eingebetteten Derby-Setup, müssen Sie dies:

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

Beachten Sie den 'EmbeddedDriver' und nicht 'ClientDriver'.

Antwort

2

Ich werde antworten, weil ich diesen roten Block in meinem Profil sehe.

Es gibt auch einen subtilen Fehler in ActiveRecord-JDBC, wenn Sie eingebettete Derby verwenden - wenn Sie es keinen Benutzernamen und ein Passwort geben, nichts funktioniert. Ich habe die Ursache für diesen Fehler ermittelt und arbeite daran, einen Patch zu senden. Wenn Sie jedoch auf dasselbe Problem stoßen, lassen Sie es mich wissen und ich werde den Code hier veröffentlichen.

+0

+1: hat mir sehr geholfen! – Rekin

0

Seltsam es funktionierte gut für mich, auf meinem Ubuntu 9.04 Box: im nur die Standard-Ubuntu-Pakete und meine DB-Konfiguration verwendet, ist:

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

Die ClientDriver ist in derbyclient.jar

0

Weitere zu Don Antwort, ich erhielt diesen Fehler bei der Verwendung des ClientDriver ohne Benutzername/Passwort: The driver encountered an error: java.sql.SQLNonTransientConnectionException: Password length (0) is outside the range of 1 to 255.

Einstellung Benutzername/Passwort in database.yml das Problem behoben!