【问题标题】:How to empty a Heroku database如何清空 Heroku 数据库
【发布时间】:2011-06-16 18:33:28
【问题描述】:

我正在 Heroku 上开发一个 Ruby on Rails 3 webapp。如何清空数据库?

【问题讨论】:

    标签: ruby-on-rails-3 heroku


    【解决方案1】:

    要删除数据库,如果您使用的是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,它会因 Couldn't create database error 而失败。

    编辑 2014-10-09:您可以将rake db:setup 与Rails 4 一起使用。它确实会给您一个Couldn't create database 错误(因为已经使用heroku pg:reset 命令创建了数据库) .但它也会在出现错误消息后加载您的数据库架构和种子。

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

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

    Running Rake Commands

    Reset Postgres DB

    【讨论】:

    • 谢谢。实际上,“heroku pg:reset --db SHARED_DATABASE_URL”起到了作用。但你让我朝着正确的方向前进。
    • @JayGodse Heroku 现在说SHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
    • 实际上你应该检查你的 schema.rb 并且你应该使用:rake db:schema:load
    • 他们现在又改成了heroku pg:reset DATABASE
    • 要节省几秒钟的时间,请使用heroku pg:reset DATABASE --confirm appname
    【解决方案2】:

    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
    

    【讨论】:

    • 如果你只是粘贴跳过后面的位(包括)--heroku 会告诉你输入什么..
    • 在 heroku 上获取 postgres 数据库名称的有用命令:heroku config | grep HEROKU_POSTGRESQL
    • "你使用文字文本 SHARED_DATABASE" ?您在代码示例中使用 DATABASE_URL。你是这个意思吗?
    • 不。我指的是另一个答案使用SHARED_DATABASE
    【解决方案3】:

    删除数据库:

    $ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP
    

    重新创建数据库:

    $ heroku run rake db:migrate
    

    为数据库播种:

    $ heroku run rake db:seed
    

    **最后一步

    $ heroku restart
    

    【讨论】:

    • 我更喜欢这个答案而不是其他答案。这在我在 Heroku 上的场景中非常有效,我相信它的投票率很低!
    • 可能是因为heroku最近更改了这些命令的语法。
    • 'heroku restart' 是我缺少的一个关键部分。谢谢。
    • heroku run rake db:migrate 不再重新创建数据库
    【解决方案4】:

    当前,即。 2017 年的做法是:

    heroku pg:reset DATABASE
    

    https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset

    【讨论】:

    • 同意。当前重新填充数据库的方法是:heroku run rake db:migrate db:seed
    【解决方案5】:

    现在命令是

    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
    

    【讨论】:

    • 可能没有必要重新启动,但最好提一下。
    【解决方案6】:

    我联系了 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
    

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

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

    只需卸载 #2 并重新运行该命令。快乐!

    【讨论】:

    • 现在所有的 gem 都被弃用了,你需要摆脱它们并安装 Heroku 工具带。 toolbelt.heroku.com
    【解决方案7】:

    完整答案是(对于拥有多数据库的用户):

    heroku pg:info - 输出

    === HEROKU_POSTGRESQL_RED 基本计划
    可用状态

    heroku pg:reset HEROKU_POSTGRESQL_RED --confirm app_name

    更多信息见:https://devcenter.heroku.com/articles/heroku-postgresql

    【讨论】:

      【解决方案8】:

      现在它与heroku不同。尝试: heroku pg:reset DATABASE --confirm

      【讨论】:

      • 对于某些应用程序您仍然需要使用 SHARED_DATABASE
      【解决方案9】:

      现在还可以通过他们的网络界面重置数据库。

      转到dashboard.heroku.com选择你的应用,然后你会在插件类别下找到数据库,点击它然后你可以重置数据库。

      【讨论】:

        【解决方案10】:

        今天的命令

        heroku pg:reset --db SHARED_DATABASE_URL
        

        不适用于共享计划,我正在使用

        heroku pg:reset SHARED_DATABASE
        

        【讨论】:

          【解决方案11】:

          检查您的 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
          

          【讨论】:

            【解决方案12】:

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

            drop schema public cascade;
            create schema public;
            

            【讨论】:

              【解决方案13】:

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

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

              【讨论】:

                【解决方案14】:

                这对我有用。

                1.清除数据库。

                heroku pg:reset --app YOUR_APP
                

                运行后,您必须再次输入您的应用名称以确认。

                2.migrate db 重新创建。

                heroku run rake db:migrate  --app YOUR_APP
                

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

                heroku run rake db:seed --app YOUR_APP
                

                【讨论】:

                  【解决方案15】:

                  假设您要重置 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
                  

                  【讨论】:

                    【解决方案16】:

                    如果您从控制台登录,这将在最新的 heroku 工具带中完成这项工作,

                    heroku pg:reset --confirm 数据库名称

                    【讨论】:

                      【解决方案17】:

                      我总是使用单行“heroku pg:reset DATABASE”来做到这一点。

                      【讨论】:

                        【解决方案18】:

                        您的问题的最佳解决方案将是

                        heroku pg:reset -r heroku  --confirm your_heroku_app_name
                        

                        --确认你的_heroku_app_name

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

                        执行该命令后,您将拥有纯 db,没有结构和东西,之后您可以运行

                        heroku run rake db:schema:load -r heroku
                        

                        heroku run rake db:migrate -r heroku
                        

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2011-08-10
                          • 2018-03-30
                          • 2012-01-26
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-01-09
                          • 1970-01-01
                          相关资源
                          最近更新 更多