Ruby on rails Rails中的Mysql2和Sqlite3
我有一个rails应用程序,它使用两种不同类型的数据库:sqlite3和mysql2 我做了一些搜索,并设法做到这一点,我的database.yml文件如下所示:Ruby on rails Rails中的Mysql2和Sqlite3,ruby-on-rails,sqlite,mysql2,Ruby On Rails,Sqlite,Mysql2,我有一个rails应用程序,它使用两种不同类型的数据库:sqlite3和mysql2 我做了一些搜索,并设法做到这一点,我的database.yml文件如下所示: development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 mysql2_development: adapter: mysql2 database: db_name username: use
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
classnewdb
这里是“NewDB”数据库中的项目表
问题:
这是正确的方法吗?我如何从控制器访问它们
在我的控制器中,我尝试了以下方法:
class NewDBController < ApplicationController
def index
@projects=PROJECT.all
end
end
class NewDBController
但是我得到了以下错误“Mysql2::error:表'newdb.projects'不存在:显示
项目的完整字段”您是否为其他环境运行了迁移
rake db:migrate RAILS_ENV=mysql2_development
另外,您的项目类也应该被称为Project
。
您可以使用:
class Project < NewDB
set_table_name "PROJECT"
end
class项目
我试着运行它,它给了我这个错误rake中止!Mysql2::错误:针对表“架构”迁移,用户“user_ro@'10.0.0.123”的CREATE命令被拒绝:CREATE table
schema_migrations`(version
varchar(255)NOT NULL)ENGINE=InnoDB`此外,Mysql2 db中的表名是带有所有大写的“PROJECT”。有关表名问题,请参阅编辑后的答案。如果表已经存在,则不需要运行迁移。如果没有,你必须登录到你的mysql并给用户写权限。我没有运行rakedb:migraterails\u ENV=mysql2\u development
,但它现在实际工作了。谢谢:)很高兴听到!如果你的问题解决了,请接受答案。