如何在 Heroku 上 rake db:drop 和 rake db:create? [复制]

Posted

技术标签:

【中文标题】如何在 Heroku 上 rake db:drop 和 rake db:create? [复制]【英文标题】:How to rake db:drop and rake db:create on Heroku? [duplicate] 【发布时间】:2012-06-14 22:45:38 【问题描述】:

可能重复:How to empty DB in 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】:

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 权限所允许的。

【讨论】:

在我的大脑某处——不知道在哪里。 只是为了澄清跳过上述链接的任何人,您想在命令行运行 heroku pg:reset,而不是 heroku run rake pg:reset 或类似的东西。跨度> 只是一个小更新:要重置postgres数据库,您需要输入数据库的name 这对我有用:heroku config | grep POSTGRESQL - 获取数据库的名称,例如HEROKU_POSTGRESQL_BLUE_URL 然后运行 ​​heroku pg:reset HEROKU_POSTGRESQL_BLUE_URL 当我使用数据库名称尝试上述选项时,我收到一条错误消息,指出 Valid options are: DATABASE_URL。所以我输入了heroku pg:reset DATABASE_URL,它工作得很好。

以上是关于如何在 Heroku 上 rake db:drop 和 rake db:create? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

自动执行 rake 任务以在 heroku 上启动时运行?

如何运行 db:migrate 从另一个带参数的 rake 任务?

如何解决极其缓慢的 rake assets:在 heroku 上预编译?

使用参数在 Heroku 上运行 rake 任务并指定 Heroku 应用程序

在 Heroku 上执行 rake db:migrate 时出错

如何将参数传递给使用 Heroku Scheduler 调用的 rake 任务?