Ruby on rails Rails中的Mysql2和Sqlite3

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

我有一个rails应用程序,它使用两种不同类型的数据库:sqlite3和mysql2

我做了一些搜索,并设法做到这一点,我的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
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
,但它现在实际工作了。谢谢:)很高兴听到!如果你的问题解决了,请接受答案。