如何在 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何运行 db:migrate 从另一个带参数的 rake 任务?
如何解决极其缓慢的 rake assets:在 heroku 上预编译?
使用参数在 Heroku 上运行 rake 任务并指定 Heroku 应用程序