2
我有一個使用兩種不同類型的數據庫的rails應用程序:sqlite3和mysql2。Rails中的Mysql2和Sqlite3
我做了一些搜索和管理,走這麼遠,我的database.yml文件看起來是這樣的:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
mysql2_development:
adapter: mysql2
database: db_name
username: user_name
password: pass_word
host: somehost.net
port: 3306
socket: /tmp/mysql.sock
我創建了模型中的下列類來訪問我的Mysql2數據庫:
class NewDB < ActiveRecord::Base
# To change this template use File | Settings | File Templates.
self.abstract_class = true
establish_connection "mysql2_#{Rails.env}"
end
class PROJECT < NewDB
end
這裏PROJECT是「NewDB」數據庫中的表格。
問題:
這是做正確的方式,還有如何從控制器訪問它們?
在我的控制器我嘗試這樣做:
class NewDBController < ApplicationController
def index
@projects=PROJECT.all
end
end
但我得到以下錯誤 「Mysql2 ::錯誤:表 'newdb.projects' 不存在:SHOW FULL FIELDS FROM projects
」
我試圖運行的是,它給了我這個錯誤 '耙中止! Mysql2 ::錯誤:CREATE命令被拒絕給表'schema_migrations'的用戶'user_ro'@'10.0.0.123':CREATE TABLE'schema_migrations'('version' varchar(255)NOT NULL)ENGINE = InnoDB' – dora
此外, mysql2 db中的表名是全部大寫的「PROJECT」。 – dora
請參閱表名問題的編輯答案。如果該表已經存在,則不需要運行遷移。如果沒有,你必須登錄到你的MySQL並給user_ro寫權限。 –