【问题标题】:Do i need to change code in rails when i migrate database from sqlite to Postgresql or someother当我将数据库从 sqlite 迁移到 Postgresql 或其他时,我是否需要更改 Rails 中的代码
【发布时间】:2016-03-04 06:42:00
【问题描述】:

我是 ruby​​ on rails 框架的新手,我使用 rails 构建了一些博客、投资组合等应用程序。为此,我使用 sqlite 作为我的数据库。 我想创建一个可扩展的应用程序,尽管 sqlite 是一个轻量级数据库。我想将数据库更改为 postgresql 、 Mysql 和 mongodb 等。

所以我的问题是如果我更改数据库,我是否需要更改 Rails 代码 还是和使用 sqlite 一样?

【问题讨论】:

  • MongoDB 是一个完全不同的野兽,你必须重写你的应用程序的重要部分才能让它在那里工作。在 SQLite、MySQL 和 PostgreSQL 之间获得可移植性的唯一方法是自己动手,AR 对困难的部分没有帮助。

标签: mysql ruby-on-rails ruby postgresql sqlite


【解决方案1】:

ActiveRecord 是一个与数据库无关的抽象。这意味着您的模型以及您查询它们所代表的表的方式在您换出基础数据库时不应该改变太多,前提是您只做基本的AR querying 并且您密切关注Rails 约定。

但是,建议在开发中使用与您计划在生产中使用相同的数据库(例如 Postgres 或 MySQL),因为在尝试部署应用时可能会遇到问题。

您需要为您要在 Gemfile 中使用的数据库添加 Gem:

#gem "sqlite3"
gem "pg"

然后更改您的 config/database.yml 以连接到您的新数据库:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  host: localhost
  port: 5432
  username: root
  password: 

development:
  <<: *default
  database: yourapp_development

test:
  <<: *default
  database: yourapp_test

如果你打算迁移到使用 Postgres(我个人最喜欢的),我推荐你 watch this Railscast

【讨论】:

  • 谢谢! rails 是否可以作为 .NET 或 Java(Spring) 进行扩展?
  • 我发现 Rails 确实具有很强的可扩展性。但我不熟悉在生产环境中扩展 .NET 或 Java。我建议谷歌搜索它。该特定问题不适用于 StackOverflow,因为它更像是一个开放式讨论。
  • “当你换出底层数据库时不应该改变”,真的吗? AR 根本没有给你有用的可移植性,它对困难的部分没有任何帮助。毕竟有很多“当我使用 SQLite 开发但在生产环境中使用 PostgreSQL 时它工作正常”的问题。
  • @muistooshort - 你说得很好。我稍微调整了我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2020-08-30
  • 2017-02-07
  • 2017-01-29
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多