如何清空Heroku数据库


Answers:


689

要删除数据库(如果正在使用)SHARED_DATABASE_URL

$ heroku pg:reset DATABASE_URL

现在重新创建没有任何内容的数据库:

$ heroku run rake db:migrate  

填充你的种子数据的数据库:

$ heroku run rake db:seed

- -要么 - -

您可以通过执行以下命令将最后两个(migration&seed)组合为一个动作:

$ heroku run rake db:setup

编辑 2014-04-18:rake db:setup不适用于Rails 4,失败时显示Couldn't create database error

编辑 2014年10月9日:您可以rake db:setup使用Rails 4,它给你一个Couldn't create database错误(因为数据库是使用已创建的heroku pg:reset命令)。但是它还会在错误消息之后加载数据库模式和种子。

您几乎可以使用任何rake命令来执行此操作,但是也有例外。例如,db:reset不适用于heroku run rake。您必须改为使用pg:reset

可以在Heroku的文档中找到更多信息:

运行耙命令

重置Postgres数据库


21
谢谢。实际上,“ heroku pg:reset --db SHARED_DATABASE_URL”可以达到目的。但是你让我朝着正确的方向前进。
杰伊·戈德斯

5
@JayGodse Heroku现在说SHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil

6
实际上,您应该检查一下schema.rb并使用:rake db:schema:load
Amala

18
他们现在又更改了heroku pg:reset DATABASE
Haris Krajina 2013年

8
要节省几秒钟的时间,请使用heroku pg:reset DATABASE --confirm appname
GangstaGraham

97

Heroku --db现在已弃用该选项,因此现在使用:

heroku pg:reset DATABASE_URL --confirm {the name of your app}

这有点令人困惑,因为您使用的是文字文本,SHARED_DATABASE但是我写{the name of your app}的是您的应用程序名称。例如,如果您的应用名为my_great_app,则可以使用:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
如果您只是粘贴略过(包括)之后的位,则-heroku会告诉您要键入的内容
。–

在heroku上获取postgres数据库名称的有用命令:heroku config | grep HEROKU_POSTGRESQL
zero_cool 2014年

“您使用原义文本SHARED_DATABASE”?您在代码示例中使用DATABASE_URL。你是那个意思吗
Michael Durrant 2014年

不。我指的是另一种答案的使用方式SHARED_DATABASE
Dave Sag 2014年

65

删除数据库:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

要重新创建数据库:

$ heroku run rake db:migrate

播种数据库:

$ heroku run rake db:seed

**最后一步

$ heroku restart

4
我更喜欢这个答案。这在我在Heroku上的场景中非常有效,我认为它已受到高度投票!
乔纳森

可能是因为heroku最近更改了这些命令的语法。
乔治·雅各布

1
“ heroku restart”是我缺少的一个关键部分。谢谢。
Jeremy Nikolai 2014年

heroku run rake db:migrate不再重新创建数据库
Rots


13

现在的命令是

heroku pg:reset DATABASE_URL --confirm your_app_name

这样,您可以指定要重置的应用数据库。那你就可以跑

heroku run rake db:migrate 
heroku run rake db:seed 

或直接针对以上两个命令

heroku run rake db:setup 

现在是重启应用程序的最后一步

heroku restart

1
重新启动可能不是必需的,但要提一下它。
Francisco Quintero

11

我联系了Heroku支持人员,他们确认这是最新gem的错误(我正在使用heroku-2.26.2)

查理(Charlie)-我们知道“ heroku” gem的这个问题,并正在努力解决。

如果您想继续关注,这就是问题-https: //github.com/heroku/heroku/issues/356

降级到“ heroku” gem的早期版本应该会有所帮助。我今天大部分时间都在使用v2.25.0,没有任何问题。

使用以下命令降级:

gem uninstall heroku

gem install heroku --version 2.25.0

如果您已经安装了多个宝石,则可能会看到:

Select gem to uninstall:
 1. heroku-2.25.0
 2. heroku-2.26.2
 3. All versions

只需卸载#2并重新运行该命令即可。喜悦!


1
现在所有宝石都已弃用,您需要摆脱它们并安装Heroku工具带。toolbelt.heroku.com
Ghoti


8

现在与heroku有所不同。尝试:heroku pg:重置数据库--confirm


对于某些应用,您仍然需要使用SHARED_DATABASE
tfwright 2012年

7

今天的命令

heroku pg:reset --db SHARED_DATABASE_URL

无法使用共享计划,我决心使用

heroku pg:reset SHARED_DATABASE

6

使用heroku pg:psql以下命令登录到您的数据库 并键入以下命令:

drop schema public cascade;
create schema public;


5

检查您的heroku版本。我刚刚将我的更新为2.29.0,如下所示:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3

现在您可以运行:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

然后创建您的数据库并将其植入单个命令中:

heroku run rake db:setup

现在重新启动并尝试您的应用程序:

heroku restart
heroku open

4

这对我有用。

1.清除数据库

heroku pg:reset --app YOUR_APP

运行后,您将不得不再次输入您的应用程序名称以进行确认。

2.迁移数据库以重新创建。

heroku run rake db:migrate  --app YOUR_APP

3.将种子数据添加到数据库。

heroku run rake db:seed --app YOUR_APP

3

如果您更喜欢使用Heroku网站:

  1. 转到https://postgres.heroku.com/databases
  2. 选择您要重置的数据库
  3. 单击右上角的设置按钮
  4. 单击“重置数据库”,如下所示:
  5. 输入“ RESET”,然后按确定

heroku数据库重置


2

假设您想重置PostgreSQL数据库并进行备份,请使用:

heroku apps

在Heroku上列出您的应用程序。查找当前应用程序的名称(application_name)。然后跑

heroku config | grep POSTGRESQL

获取数据库的名称。一个例子可能是

HEROKU_POSTGRESQL_WHITE_URL

最后,根据application_namedatabase_url,您应该运行

heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart



0

最好的解决方案是

heroku pg:reset -r heroku  --confirm your_heroku_app_name

-确认your_heroku_app_name

不是必需的,但是终端总是要求我执行该命令。

执行完该命令后,您将拥有纯数据库,没有结构和内容,之后就可以运行

heroku run rake db:schema:load -r heroku

要么

heroku run rake db:migrate -r heroku
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.