Rails中的Mysql2和Sqlite3

时间:2013-04-15 10:15:41

标签: 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: 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 :: Error:Table'newdb.projects'不存在:显示来自projects的完整字段”

1 个答案:

答案 0 :(得分:2)

您是否为其他环境运行了迁移?

rake db:migrate RAILS_ENV=mysql2_development

您的Project类也应该调用Project。 您可以使用:

class Project < NewDB
  set_table_name "PROJECT"
end