【问题标题】:How to clone production db on Heroku to development db如何将 Heroku 上的生产数据库克隆到开发数据库
【发布时间】:2013-07-11 14:12:13
【问题描述】:

我正在使用 Ruby on Rails 3.2.13。

本地开发环境中的SQLite3。

Heroku (PostgreSQL) 的生产环境。

在满足上述先决条件的情况下,将数据库从生产环境拉到开发环境的最新(!= 已弃用)和最简单的方法是什么?

【问题讨论】:

  • 你确实应该在本地开发时使用 postgresql,而不是 sqlite。

标签: ruby-on-rails heroku


【解决方案1】:

你可以用水龙头宝石做到这一点

heroku 数据库:拉动

heroku 上也有一些关于这个主题的帖子:

https://blog.heroku.com/archives/2009/3/18/push_and_pull_databases_to_and_from_heroku https://devcenter.heroku.com/articles/heroku-postgres-import-export

【讨论】:

  • 在他们最近的文档(您的第二个链接)中,他们提到了 PG 备份。那是不是 taps gem 的替代品,用例类似吗?
  • 我不这么认为。 AFAIK 它创建 Postgres 备份。这对你的 sqlite3 数据库来说不是很方便。
【解决方案2】:

您可以使用以下命令从 Heroku 中提取最新的生产环境:

curl -o latest.dump `heroku pgbackups:url`

从那里,您需要将转储从 PG 转换为 SQLite 可以读取的内容。具体步骤如下:

  1. 删除以SET 开头的行
  2. 删除以SELECT pg_catalog.setval 开头的行
  3. true 替换为‘t’
  4. false 替换为‘f’
  5. BEGIN; 添加为第一行,将END; 添加为最后一行

最后,您需要将其导入 SQLite。

sqlite3 db/development.sqlite3
sqlite> delete from schema_migrations;
sqlite> .read latest.sql

您可以阅读details on this procedure here

【讨论】:

    猜你喜欢
    • 2015-02-21
    • 2014-08-11
    • 2016-12-31
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多