如何在Heroku上执行rake db:drop和rake db:create命令?

46

可能是重复问题:
如何在Heroku上清空数据库

我在Heroku上有一个Postgres数据库,它是免费测试版之一。在本地测试时,我经常运行rake db:drop && rake db:create && rake db:migrate来重置数据库。

然而,在Heroku上尝试运行此命令时,我遇到了以下错误:

Couldn't drop mydatabaseid : #<PG::Error: FATAL:  permission denied for database "postgres"
  DETAIL:  User does not have CONNECT privilege.

好的,那么我应该如何完全重置我的数据库、迁移和所有内容呢?

1个回答

90

pg:reset命令会为您重新创建数据库。示例用法:

$ heroku config | grep POSTGRESQL
HEROKU_POSTGRESQL_RED_URL: postgres://somedatabaseurl
$ heroku pg:reset HEROKU_POSTGRESQL_RED_URL
!    WARNING: Destructive Action
!    This command will affect the app: myappname
!    To proceed, type "myappname" or re-run this command with --confirm
> myappname
Resetting HEROKU_POSTGRESQL_RED_URL (DATABASE_URL)... done

db:reset 命令会尝试删除数据库,而这并不是 Heroku 权限允许的事情。


4
在我的脑海中某个地方——不知道具体在哪里。 - Neil Middleton
64
为了澄清一下,如果有人跳过了上面的链接,你需要在命令行中运行 **heroku pg:reset**,而不是 heroku run rake pg:reset 或任何其他类似的命令。 - GMA
6
小小更新:要重置 postgres 数据库,您需要输入数据库的 名称 - user2107733
32
这个方法对我有效:运行 heroku config | grep POSTGRESQL,获取数据库名称(例如 HEROKU_POSTGRESQL_BLUE_URL),然后运行 heroku pg:reset HEROKU_POSTGRESQL_BLUE_URL - user2107733
5
当我尝试使用数据库名称进行上述选项时,出现了一个错误,指出“有效选项为:DATABASE_URL”。因此,我输入了“heroku pg:reset DATABASE_URL”,它正常工作了。 - B. Bulpett
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接