我正在Heroku上开发Ruby on Rails 3 web应用程序。如何清空数据库?


当前回答

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

访问https://postgres.heroku.com/databases 选择要重置的数据库 点击右上角的设置按钮 点击“重置数据库”,如下图所示: 输入“RESET”,然后按“ok”

其他回答

现在命令是

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

要删除数据库,如果你使用SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

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

$ heroku run rake db:migrate  

用种子数据填充数据库:

$ heroku run rake db:seed

——或

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

$ heroku run rake db:setup

编辑2014-04-18:rake db:setup不能与Rails 4一起工作,它失败了,提示不能创建数据库错误。

编辑2014-10-09:你可以在Rails 4中使用rake db:setup。它会给你一个cannot 't create database错误(因为数据库已经使用heroku pg:reset命令创建了)。但是它也会在错误消息之后加载数据库模式和种子。

您可以使用几乎任何rake命令来实现这一点,但也有例外。例如,db:reset不能通过heroku运行rake工作。你必须使用pg:reset来代替。

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

运行Rake命令

重置Postgres DB

今天的命令

heroku pg:reset --db SHARED_DATABASE_URL

不为共享计划工作,我决定使用

heroku pg:reset SHARED_DATABASE

Heroku现在已经弃用了——db选项,所以现在使用:

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

这有点令人困惑,因为你使用文字文本SHARED_DATABASE,但我已经写了{你的应用程序的名称}替换你的应用程序的名称。例如,如果你的应用程序被称为my_great_app,那么你使用:

heroku pg:reset DATABASE_URL --confirm my_great_app

假设你想重置你的PostgreSQL数据库并将其备份,使用:

heroku apps

在Heroku上列出你的申请。找到当前应用程序的名称(application_name)。然后运行

heroku config | grep POSTGRESQL

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

HEROKU_POSTGRESQL_WHITE_URL

最后,给定application_name和database_url,您应该运行

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