我需要将Heroku DB拉到我的本地,还将DB推到Heroku遥控器。在当地,我有mysql,在Heroku,它是PostgreSql。我发现了互联网中建议的很多方法,但似乎没有任何作用,其中大多数都很旧,而且情况已经改变。
尝试的事情:
heroku db:push
-不工作
$ heroku db:push
! `db:push` is not a heroku command.
! Perhaps you meant `pg:push`.
! See `heroku help` for a list of available commands.
heroku pg:push
:这里不确定如何提及源数据库(我没有本地数据库密码)
$ heroku pg:push mysql://root:@localhost/app_development --app myapp
Usage: heroku pg:push <SOURCE_DATABASE> <REMOTE_TARGET_DATABASE>
push from SOURCE_DATABASE to REMOTE_TARGET_DATABASE
REMOTE_TARGET_DATABASE must be empty.
SOURCE_DATABASE must be either the name of a database
existing on your localhost or the fully qualified URL of
a remote database.
信息:
$ heroku version
heroku-toolbelt/3.37.0 (x86_64-linux) ruby/2.2.1
You have no installed plugins.
OS:Ubuntu 14.04
$ heroku pg:info --app myapp
=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 1/20
PG Version: 9.4.1
Created: 2015-05-16 07:05 UTC
Data Size: 6.7 MB
Tables: 6
Rows: 0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
您不能像Snkashis所说的那样,将mysql推向PG。但是,假设您已将数据迁移到Postgres DB,则需要将两件事添加到heroku pg:push
,命令中,这是您的本地数据库名称和Heroku上的数据库。要获取HEROKU数据库的名称,请在控制台中输入以下内容:
$ heroku pg
您应该看到以下输出:
=== HEROKU_POSTGRESQL_GREEN_URL, DATABASE_URL
Plan: Standard 0
Status: Available
Data Size: x.xx GB
Tables: 83
PG Version: 9.4.1
Connections: 8/120
Fork/Follow: Available
Rollback: earliest from 2015-08-08 21:07 UTC
Created: 2015-03-09 14:29 UTC
Maintenance: not required
Maintenance window: Tuesdays 23:00 to Wednesdays 03:00 UTC
Add-on: dozing-drolly-xxx
在此示例中,您的DATABASE_URL
将是HEROKU_POSTGRESQL_GREEN_URL
从Postgres控制台类型中获取当前本地数据库的名称:
select current_database()
,您应该得到一个输出:
current_database
--------------------
db_development
(1 row)
现在,您的命令将是:
heroku pg:push db_development HEROKU_POSTGRESQL_GREEN_URL
您不能从MySQL到PG使用pg:push
。我认为这里的正确答案是确保切换您的本地开发系统以使用Postgres匹配您的生产环境。这有可能最大程度地减少许多问题(包括尚未暴露自己的问题),而不仅仅是这个问题。Heroku实际上提供了有关此转换实用程序的注释,您可以在https://devcenter.heroku.com/articles/heroku-mysql中查看详细信息。