【问题标题】:clearing rails app database on heroku production site在 Heroku 生产站点上清除 Rails 应用程序数据库
【发布时间】:2011-10-17 21:57:34
【问题描述】:

所以我是 ROR 和 Heroku 的新手,需要一点帮助。我创建了一个应用程序并部署了它;但是,我想清除与之关联的数据库。这意味着我想清除迄今为止创建的所有用户(及其附加数据)。

我基本上已经创建了几个假帐户来测试生产站点上的数据库是否工作,但现在我想清除它,并从一个新的数据库开始。

在不完全删除数据库的情况下是否可以这样做?

任何帮助将不胜感激。非常感谢您的宝贵时间!

【问题讨论】:

    标签: ruby-on-rails database deployment rake staging


    【解决方案1】:

    您可以使用heroku pg:reset DATABASE 命令重置整个数据库。该命令将简单地删除并创建数据库。

    然后你必须使用heroku rake db:migrate 来创建表格。

    您也可以在本地使用rake db:reset 命令,然后运行heroku db:push 来更新生产数据库。

    【讨论】:

    • 在雪松栈上,你也可以直接通过heroku run运行任何命令,所以:heroku run rake db:reset
    • 这个答案在 2013 年已经过时了。请在下面查看我的答案。
    【解决方案2】:
    heroku pg:reset DATABASE --confirm {app-name}
    
    heroku run rake db:migrate
    
    heroku run rake db:seed
    

    【讨论】:

    • 谢谢,这对我轻松重置和重新创建数据库很有帮助。
    【解决方案3】:

    通过终端登录 Heroku,然后 运行以下命令之一:

    heroku rake db:reset
    //or:    
    heroku run rake db:reset
    

    第一个是旧的,第二个是最新的。

    【讨论】:

      【解决方案4】:

      2013 way to do this 是:

      在您的控制台中输入heroku pg:reset DATABASE,然后在出现提示时输入您的应用名称。这将删除整个数据库——表、行、列、所有数据,一切。

      然后,输入heroku run rake db:migrate。这将创建相同的表、行和列,但没有任何对象数据。

      【讨论】:

        【解决方案5】:

        目前的方式是:

        heroku pg:reset DATABASE_URL --confirm <APP_NAME>
        

        【讨论】:

          【解决方案6】:

          当前 Cedar 堆栈对共享数据库的正确语法是:

          heroku pg:reset SHARED_DATABASE my-database-name-1294
          

          (将“my-database-name-1294”替换为 URL 中 .herokuapp.com 之前的内容)

          然后它会问你这个:

          ----> Resetting SHARED_DATABASE (DATABASE_URL)
          
           !    WARNING: Potentially Destructive Action
           !    This command will affect the app: my-database-name-1294
           !    To proceed, type "my-database-name-1294" or re-run this command with --confirm my-database-name-1294
          

          只需在此处重新输入“my-database-name-1294”,它就会重置所有内容。

          【讨论】:

            【解决方案7】:

            重置数据库

            像下面这样跑

            heroku pg:reset SHARED_DATABASE --confirm APP_NAME

            这对我来说效果很好

            【讨论】:

              【解决方案8】:

              是的,您可以使用 SQL 方法执行此操作,也可以仅使用 Rails 控制台从命令行执行此操作并调用 @users.destroy_all 方法。 This article 解释了如何使用 Heroku 的控制台。

              【讨论】:

              • 我很好奇...我目前在我的 Mac(本地主机)上。我在以下假设中是否正确:如果我运行 rake db:reset (在我的 localhost/staging db 上),它会在不清除表和架构的情况下清除所有数据吗?如果是这样,那么我是否会使用 heroku db:push 命令将该数据库推送到 heroku?这也行吗?
              • 如果你想完全删除并重新创建数据库,你可以这样做:rake db:drop rake db:migrate
              【解决方案9】:

              如果您有两台服务器 - 生产和登台,并且您想将数据库从生产添加到登台

              heroku pg:reset DATABASE --remote staging
              heroku pgbackups:restore DATABASE URL_OF_DATABASE --remote staging
              heroku run rake db:migrate --remote staging
              

              URL_TO_DATABASE - 转储的 aws 或 Dropbox url。

              这对我有用!

              【讨论】:

                【解决方案10】:

                Heroku 提供了一个可视化工具来执行此操作。 转到资源> Heroku Postgres :: 数据库 手动删除数据库

                如果您想迁移您的表,请使用rake db:migrate 发射你的种子rake db:seed

                【讨论】:

                  【解决方案11】:

                  也可以从网络仪表板重置数据库:

                  找到您的数据库并点击链接:

                  在数据库页面点击“设置”

                  然后单击“重置数据库”并按照说明进行确认。

                  您当然需要使用 rake 进行迁移以恢复您的表。

                  【讨论】:

                    【解决方案12】:

                    重置数据库

                    运行后会要求你确认:

                    heroku pg:reset DATABASE_URL
                    

                    在一行中全部重置

                    我不使用这种方法以防万一我犯了一个错误(我更喜欢上面的方法要求我确认)。将myherokuapp 替换为您的应用名称:

                    heroku pg:reset DATABASE_URL --confirm myherokuapp
                    

                    重置和重新播种

                    与之前一样,请小心,因为这将完全删除您当前的数据库并从seeds.rb 重新播种。将myherokuapp 替换为您的应用名称:

                    heroku pg:reset DATABASE_URL --confirm myherokuapp
                    heroku run rake db:migrate db:seed
                    

                    【讨论】:

                      【解决方案13】:

                      在项目目录中使用此命令。添加 DISABLE_DATABASE_ENVIRONMENT_CHECK=1 允许生产环境像开发环境一样运行。

                      heroku run db:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
                      

                      【讨论】:

                        猜你喜欢
                        • 2021-05-17
                        • 1970-01-01
                        • 2017-10-31
                        • 2011-04-21
                        • 1970-01-01
                        • 2013-12-26
                        • 1970-01-01
                        • 2013-11-15
                        • 1970-01-01
                        相关资源
                        最近更新 更多