ruby-on-rails - Rails 中的 Mysql2 和 Sqlite3

标签 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”数据库中存在的表。

问题:

这是正确的方法吗?我如何从 Controller 访问它们?

在我的 Controller 中我尝试了这个:

class NewDBController < ApplicationController

  def index
    @projects=PROJECT.all
  end
end

但我收到以下错误“Mysql2::Error: 表 'newdb.projects' 不存在:显示 projects 中的完整字段”

最佳答案

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

rake db:migrate RAILS_ENV=mysql2_development

此外,您的 Project 类应该称为 Project。 您可以使用:

class Project < NewDB
  set_table_name "PROJECT"
end

关于ruby-on-rails - Rails 中的 Mysql2 和 Sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16012689/

相关文章:

ruby-on-rails - 具有语法高亮显示功能的免费 Linux 文本编辑器

sql-server - SQL Server 2008 Express 到 SQLite

ruby-on-rails - Rails 服务器无法运行——这是 mysql2 的问题吗?

android - 将 SQLite 数据库上传到 Google App 引擎?

android - Sqlite 数据库生命周期?应用程序关闭时它会被删除吗?

ruby-on-rails - 更新到 Ubuntu 16.04 后 mysql2 gem 不工作 - libmysqlclient.so.18

ruby-on-rails - Redmine - 安装mysql2(0.3.16)时出错,Bundler无法继续

javascript - Rails 5.1 与 Webpacker。使用自定义 js 类

ruby-on-rails - 如何检测我的应用程序是否在 Heroku 上运行?

ruby-on-rails - 无法修改卡住的字符串