2009-04-08 21 views
5

Cố gắng sử dụng JRuby 1.2.0 và Rails 2.3.2 với cơ sở dữ liệu Derby được nhúng. Tôi đã sao chép derbytools.jarderby.jar để $RUBY_HOME/lib, nhưng rake db:migrate vẫn mang lại:Sử dụng Derby được nhúng với JRuby trên Rails

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

Aaaand ... Tôi đóng một linh cảm và figured it out. Vì vậy, tôi sẽ đăng bài này ở đây trong trường hợp ai đó khác chạy vào cùng một vấn đề tôi đã làm.

Hầu như tất cả các tài liệu tôi tìm thấy trực tuyến có cấu hình sau database.yml cho Derby:

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

này có lẽ hoạt động tốt cho một thiết lập client/server, nhưng đối với một thiết lập Derby nhúng, bạn cần điều này:

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

Lưu ý 'EmbeddedDriver' chứ không phải 'ClientDriver'.

Trả lời

2

Sẽ trả lời, vì tôi ghét thấy khối màu đỏ trong tiểu sử của mình.

Ngoài ra còn có một lỗi tinh vi trong ActiveRecord-JDBC khi bạn sử dụng nhúng derby - nếu bạn không cho nó một tên người dùng và mật khẩu, không có gì hoạt động. Tôi đã theo dõi nguyên nhân của lỗi này và đang làm việc để gửi bản vá, nhưng nếu bạn gặp phải vấn đề tương tự tôi đã làm, hãy cho tôi biết và tôi sẽ đăng mã ở đây.

+0

+1: đã giúp tôi rất nhiều! – Rekin

0

Strange nó làm việc tốt cho tôi, trên ubuntu của tôi 9,04 hộp: im chỉ sử dụng các gói ubuntu tiêu chuẩn và cấu hình DB của tôi là:

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

Các ClientDriver là trong derbyclient.jar

0

Tiếp tục cho câu trả lời của Don, tôi gặp lỗi này khi sử dụng ClientDriver mà không có tên người dùng/mật khẩu: The driver encountered an error: java.sql.SQLNonTransientConnectionException: Password length (0) is outside the range of 1 to 255.

Đặt tên người dùng/mật khẩu trong cơ sở dữ liệu.yml đã khắc phục sự cố!

Các vấn đề liên quan