Tôi đã đọc trên tài liệu hướng dẫn về cách thực hiện điều này, nhưng trên thực tế, tôi đang gặp sự cố. Trong ứng dụng của tôi, tôi có 2 cơ sở dữ liệu khác nhau như được mô tả bên dưới trong tệp database.yml của tôi.Cách sử dụng nhiều cơ sở dữ liệu trong ứng dụng Rails Sử dụng cơ sở dữ liệu
sqlite_test:
adapter: sqlite3
database: db/sqlite_test.sqlite3
table: plots
pool: 5
timeout: 5000
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: test
pool: 5
username: myname
password: mypassword
host: localhost
Ứng dụng của tôi là một bản vẽ động sẽ vẽ dữ liệu trong cơ sở dữ liệu (cơ bản) mà không biết kiến thức cơ sở dữ liệu. Cả hai cơ sở dữ liệu này chứa dữ liệu khác nhau. Cơ sở dữ liệu SQLite mà tôi đã tạo trong một ứng dụng Rails riêng biệt.
Ứng dụng hiện tại tôi đang sử dụng được xây dựng xung quanh cơ sở dữ liệu MYSQL, mà tôi xây dựng bên ngoài. Tôi đã sao chép cơ sở dữ liệu SQLite vào thư mục/db. Vì vậy, trong mô hình chính của tôi, khi tôi nói:
class Plot < ActiveRecord::Base
establish_connection :development
set_table_name "stock_test"
set_primary_key :id
Mọi thứ hoạt động tốt và dandy. Tuy nhiên, khi tôi thay đổi nó để:
establish_connection :sqlite_test
set_table_name "plots"
và cố gắng truy cập vào cơ sở dữ liệu thông qua giao diện điều khiển Rails, tôi nhận được một lỗi nói:
>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter
Tôi không biết lý do tại sao có nghĩa là, kể từ khi tệp database.yml rõ ràng không chỉ định bộ điều hợp? Khi tôi làm điều đó bằng tay trong mô hình của tôi mặc dù, tất cả mọi thứ hoạt động chính xác như nó cần.
class Plot < ActiveRecord::Base
establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5)
Tại sao tất cả hoạt động khi tôi chỉ định thủ công những gì trong database.yml, nhưng không phải khi tôi chỉ sử dụng tham chiếu database.yml?
Cảm ơn!
điều này không hoạt động nếu bạn có hai 'phát triển:' với khóa/valuee khác nhau? – vol7ron