2009-04-08 15 views
5

Tentativo di utilizzare JRuby 1.2.0 e Rails 2.3.2 con un database Derby incorporato. Ho copiato derbytools.jar e derby.jar a $RUBY_HOME/lib, ma rake db:migrate dà ancora:Utilizzo di Derby incorporato con JRuby su Rails

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

Aaaand ... ho giocato un'intuizione e capito. Quindi, posterò questo qui nel caso in cui qualcun altro si imbatta nello stesso problema che ho fatto.

Quasi tutta la documentazione ho trovato in rete ha la database.yml seguente configurazione per Derby:

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

Questo probabilmente funziona bene per una configurazione client/server, ma per una configurazione Derby incorporato, avete bisogno di questo:

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

Nota 'EmbeddedDriver' e non 'ClientDriver'.

risposta

2

Andando a rispondere, perché odio vedere quel blocco rosso nel mio profilo.

C'è anche un piccolo bug in ActiveRecord-JDBC quando si utilizza derby incorporato - se non si fornisce un nome utente e una password, non funziona nulla. Ho rintracciato la causa di questo bug e sto lavorando per inviare una patch, ma se ti imbatti nello stesso problema che ho fatto, fammelo sapere, e posterò il codice qui.

+0

+1: mi ha aiutato molto! – Rekin

0

Strano ha funzionato bene per me, sul mio ubuntu 9.04 scatola: im utilizzando solo i pacchetti di Ubuntu standard e la mia configurazione DB è:

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

Il ClientDriver è in derbyclient.jar

0

Ulteriori alla risposta di Don, stavo ricevendo questo errore durante l'utilizzo di ClientDriver senza nome utente/password: The driver encountered an error: java.sql.SQLNonTransientConnectionException: Password length (0) is outside the range of 1 to 255.

Impostazione nome utente/password in database.yml risolto il problema!