是否可以将本地MYSQL数据库拉/推到heroku postgresql db?

时间:2015-05-17 17:30:11

标签: mysql database postgresql heroku

我需要将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

2 个答案:

答案 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查看详细信息。