我在Windows7机器上用PostgreSQL
开发数据库开发了一个Rails 3.2.13
应用程序。我成功地将我的应用程序推送给了heroku。然而,现在我被困在将现有数据迁移到Heroku的过程中。
我试着遵循Heroku的文档,但我似乎无法让它发挥作用。
以下是我迄今为止所做的:
- 已安装PG Backups heroku插件
- 使用命令
pg_dump -Fc --no-acl --no-owner -h localhost -U user myapp_development > myapp_development.dump
为我的开发数据库创建了一个转储文件 - 已将转储文件上传到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'