我在Windows7计算机上开发了一个带Rails 3.2.13
开发数据库的PostgreSQL
应用。我成功地将我的应用程序推送到了heroku。但是,现在我陷入了将现有数据迁移到Heroku的过程中。
我试过跟随Heroku的documentation,但我似乎无法让它工作。
这是我到目前为止所做的:
pg_dump -Fc --no-acl --no-owner -h localhost -U user myapp_development > myapp_development.dump
此时,我不知道如何继续,恢复转储文件并将其转换为Heroku中的生产数据库。有人可以帮忙吗?
P.S。
我也尝试了heroku db:push
命令,但它出现了以下错误:
无法连接到数据库:Sequel :: AdapterNotFound - > LoadError: 无法加载此类文件 - pg
答案 0 :(得分:3)
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网址与您在上面步骤(a)的“属性”中看到的网址相同。
DATABASE是此命令的heroku关键字,应按原样键入。它等同于您在运行时看到的DATABASE_URL配置设置:
$ heroku config --app your-heroku-app-name
答案 1 :(得分:1)
现在您已经在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'
答案 2 :(得分:1)
确保所有宝石都安装在您的系统上。
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
OR
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是数据库名。
祝你好运......... !!