繁体   English   中英

Rails-Heroku在本地计算机上的现有开发Postgres数据库

[英]Rails - existing development Postgres database on local machine to Heroku

我已经在Windows7机器上使用PostgreSQL开发数据库开发了Rails 3.2.13应用程序。 我能够成功地将我的应用程序推送到heroku。 但是,现在我陷入了将现有数据迁移到Heroku的过程中。

我已经尝试按照Heroku的文档进行操作,但是似乎无法正常工作。

到目前为止,这是我所做的:

  1. 安装了PG备份heroku插件
  2. 使用命令pg_dump -Fc --no-acl --no-owner -h localhost -U user myapp_development > myapp_development.dump为我的开发数据库创建了一个转储文件
  3. 将转储文件上传到AWS S3

在这一点上,我不确定如何继续还原转储文件并将其转换为Heroku中的生产数据库。 谁能帮忙吗?

PS我也尝试了heroku db:push命令,但是给出了以下错误:

无法连接到数据库:Sequel :: AdapterNotFound-> LoadError:无法加载此类文件-pg

a)在S3上,您需要将转储文件设置为公开可读。

在S3存储桶中,右键单击您上传的转储文件,然后单击“公开”

现在,当您单击该文件的“属性”按钮(右上角)时,您将看到一个“链接”值。 这意味着该文件现在可以从外部(包括Heroku)进行访问。

b)您将需要运行以下命令来将此pg dump还原到您的heroku数据库中:

$ heroku pgbackups:restore DATABASE 'http://your.s3.domain.here.s3-us-xxxx-xx.amazonaws.com/myapp_development.dump' --app your-heroku-app-name

笔记:

  • 要运行“ heroku”命令,您需要安装heroku工具带。

  • 请注意,步骤(b)中的http URL与您在上述步骤(a)中“属性”中看到的URL是相同的公共URL。

  • DATABASE是此命令的heroku关键字,应原样输入。 它等于您在运行时看到的DATABASE_URL配置设置:

$ heroku config --app your-heroku-app-name

现在您已经在S3上上传了转储文件,您需要告诉pgbackups加载该转储。

尝试这样的事情:

$ heroku pgbackups:restore DATABASE_URL 'https://s3.amazonaws.com/mybucket/path/to/myapp_development.dump'

我在这里找到了该命令: https : //devcenter.heroku.com/articles/heroku-postgres-import-export

编辑:

DATABASE_URL应该逐字记录。 但是,如果您想指定数据库,则可以使用heroku pg:info来查找数据库的名称。

对我来说, heroku pg:info打印:

=== HEROKU_POSTGRESQL_COPPER_URL (DATABASE_URL)
Plan:        Basic
Status:      available
Connections: 1
PG Version:  9.1.9
Created:     2013-03-06 17:21 UTC
Data Size:   9.5 MB
Tables:      9
Fork/Follow: Unsupported

因此,就我而言,我将使用:

$ heroku pgbackups:restore HEROKU_POSTGRESQL_COPPER_URL 'https://s3.amazonaws.com/mybucket/path/to/myapp_development.dump'

确保在系统上安装了所有gem。

sudo apt-get install sqlite3 libsqlite3-dev
sudo gem install sqlite3-ruby

gem install heroku taps sequel

sudo gem install tabs

sudo heroku db:push

要么

sudo heroku db:push –config herokuServerName

如果仍然有问题。 使用以下命令

heroku db:pull postgres://root:@localhost/db_name

其他

sudo heroku db:pull --confirm herokuDomanName postgres://userName:@localhost/Locadatabase

root将是数据库用户名,db_name是数据库名。

祝好运.........!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM