我正在Heroku上开发Ruby on Rails 3 web应用程序。如何清空数据库?
要删除数据库,如果你使用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
删除数据库:
$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP
重新创建数据库:
$ heroku run rake db:migrate
为数据库播种:
$ heroku run rake db:seed
* *最后一步
$ heroku restart
我联系了Heroku的支持人员,他们确认这是最新宝石的bug(我正在使用Heroku -2.26.2)
查理——我们已经意识到‘heroku’宝石的这个问题了 正在努力解决它。 问题来了,如果你愿意的话 https://github.com/heroku/heroku/issues/356 降级到早期版本的“heroku”宝石应该会有所帮助。今天大部分时间我都在使用v2.25.0,没有任何问题。
使用以下命令降级:
gem uninstall heroku
gem install heroku --version 2.25.0
如果你已经安装了多个宝石,你可能会看到:
选择gem卸载: 1. heroku-2.25.0 2. heroku-2.26.2 3.所有版本
只需卸载#2并重新运行命令。快乐!
检查你的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
登录到您的DB使用 Heroku pg:psql,输入以下命令:
drop schema public cascade;
create schema public;
水流。2017年的做法是:
heroku pg:reset DATABASE
https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset
现在命令是
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
完整的答案是(对于有多个db的用户):
Heroku pg:info -输出
=== HEROKU_POSTGRESQL_RED <——这是DB 计划基本 可用状态
heroku pg:reset HEROKU_POSTGRESQL_RED——确认app_name
更多信息请访问:https://devcenter.heroku.com/articles/heroku-postgresql
假设你想重置你的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
现在也可以通过他们的web界面重置数据库。
去dashboard。heroku。com选择你的应用,然后你会在附加组件类别下找到数据库,点击它,然后你可以重置数据库。
如果您更喜欢使用Heroku网站:
访问https://postgres.heroku.com/databases 选择要重置的数据库 点击右上角的设置按钮 点击“重置数据库”,如下图所示: 输入“RESET”,然后按“ok”
最好的解决办法是
heroku pg:reset -r heroku --confirm your_heroku_app_name
——确认your_heroku_app_name
不是必须的,但是终端总是问我做那个命令。
在这个命令之后,你将有一个纯db,没有结构和东西,之后你就可以运行了
heroku run rake db:schema:load -r heroku
or
heroku run rake db:migrate -r heroku
这对我来说很管用。 1.清晰的db。
heroku pg:reset --app YOUR_APP
运行后,你必须再次输入你的应用程序名称来确认。
2.迁移数据库重新创建。
heroku run rake db:migrate --app YOUR_APP
3.将种子数据添加到数据库。
heroku run rake db:seed --app YOUR_APP
推荐文章
- 如何在Heroku上重新启动rails服务器?
- 如何使用Ruby on Rails进行HTTP请求?
- Heroku和GitHub:“项目无法检索,内部服务器错误”
- 如何关闭部署在Heroku上的应用程序?
- Rails—找不到JavaScript运行时?
- 最好的方法加载模块/类从lib文件夹在Rails 3?
- 'heroku'似乎不是一个git存储库
- 替换字符串中的单词- Ruby
- 防止Heroku空转的简单方法?
- Rails:当模型已经存在时,如何运行“Rails生成脚手架”?
- 如何运行单个RSpec测试?
- 分离REST JSON API服务器和客户端?
- 我如何在Ruby on Rails 3.1禁用资产管道(链轮)消息的日志记录?
- 如何清空Heroku数据库
- 没有匹配“/users/sign_out”的路由