我需要将heroku数据库拉到我的本地,并将我的数据库推送到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.
操作系统: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
答案 0 :(得分:1)
你无法将MySQL推向PG,正如snkashis所说。但假设您已将数据迁移到postgres数据库,则需要向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
答案 1 :(得分:0)
您不能将System.arraycopy()
从MySQL用于PG。我认为这里的正确答案是明确切换您的本地开发系统以使用Postgres来匹配您的生产环境......这有可能最大限度地减少许多问题(包括那些尚未暴露自己的问题),而不仅仅是这个。 Heroku实际上为此提供了转换实用程序的注释,您可以在https://devcenter.heroku.com/articles/heroku-mysql查看详细信息。