![](/img/trans.png)
[英]Rails 4: How do you run a Postgres database downloaded from Heroku on my local machine?
[英]Rails - existing development Postgres database on local machine to Heroku
我已经在Windows7机器上使用PostgreSQL
开发数据库开发了Rails 3.2.13
应用程序。 我能够成功地将我的应用程序推送到heroku。 但是,现在我陷入了将现有数据迁移到Heroku的过程中。
我已经尝试按照Heroku的文档进行操作,但是似乎无法正常工作。
到目前为止,这是我所做的:
pg_dump -Fc --no-acl --no-owner -h localhost -U user myapp_development > myapp_development.dump
为我的开发数据库创建了一个转储文件 在这一点上,我不确定如何继续还原转储文件并将其转换为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.