Rails-本地机器上现有的开发Postgres数据库到Heroku



我在Windows7机器上用PostgreSQL开发数据库开发了一个Rails 3.2.13应用程序。我成功地将我的应用程序推送给了heroku。然而,现在我被困在将现有数据迁移到Heroku的过程中。

我试着遵循Heroku的文档,但我似乎无法让它发挥作用。

以下是我迄今为止所做的:

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

在这一点上,我不知道如何继续,恢复转储文件并将其转换为Heroku中的生产数据库。有人能帮忙吗?

p.S。我也尝试过heroku db:push命令,但它给出了以下错误:

未能连接到数据库:Sequel::AdapterNotFound->LoadError:无法加载这样的文件--pg

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

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

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

b) 你需要运行这样的命令来将这个pg转储恢复到你的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相同。

  • DATABASE是这个命令的一个heroku关键字,应该按原样键入。它相当于运行时看到的DATABASE_URL配置设置:

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

确保所有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是数据库名称。

祝你好运。。。。。。。。。!!

现在您已经在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'

最新更新