Ruby on rails Rails 5如何清除或删除生产postgres数据库

Ruby on rails Rails 5如何清除或删除生产postgres数据库,ruby-on-rails,ruby,rake,ruby-on-rails-5,rails-postgresql,Ruby On Rails,Ruby,Rake,Ruby On Rails 5,Rails Postgresql,我正在尝试删除生产数据库,以便重新开始。当我从rails 4升级到rails 5时,它现在可以保护生产数据库不被意外删除。当我运行rake db:reset时,它显示以下错误消息 它说我将环境变量DISABLE\u DATABASE\u environment\u CHECK=1添加到命令中应该可以工作,但实际上不行。我运行它,它什么也不做 <606723-x9dh4:/app# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rake db:reset

我正在尝试删除生产数据库,以便重新开始。当我从rails 4升级到rails 5时,它现在可以保护生产数据库不被意外删除。当我运行rake db:reset时,它显示以下错误消息

它说我将环境变量DISABLE\u DATABASE\u environment\u CHECK=1添加到命令中应该可以工作,但实际上不行。我运行它,它什么也不做

<606723-x9dh4:/app# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rake db:reset       
  ActiveRecord::SchemaMigration Load (1.6ms)  SELECT "schema_migrations".* FROM "schema_migrations"
有人知道我做错了什么吗?谢谢你的帮助

更新:


我的服务器是使用kubernetes部署的。我猜我无法重置数据库,因为服务器正在运行。

你能给下面一个镜头吗

RAILS_ENV=production rake db:drop
RAILS_ENV=production rake db:create

这是一种旧方法,但我以前就是这样将数据库重置为原始级别的。

试试这个它对我有用:

RAILS_ENV=production rake db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1 

在一行中。

它不起作用,但您应该运行如下命令

 bundle exec rake RAILS_ENV=production db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1
当您删除表时,您必须重新创建它。因此,如果您没有创建DB的权限,则会出现错误。这是您的asnwer

键入psql时,通过键入\q退出


正如我所说,这不是答案,但我希望这将节省您在搜索时的时间。因为我现在就在那里。GL&HF

好吧,尽管这是一篇老文章,但为了将来的参考,你可以这样做

    rake db:migrate VERSION=0
然后

    rake db:migrate

根据Heroku关于以下内容的文档:

不支持db:reset任务。Heroku应用程序没有删除和创建数据库的权限。改用heroku pg:reset命令

因此,与其尝试让rails或rake db:reset复位,不如尝试以下方法:


heroku pg:reset

将生产数据库转储到本地时也会发生这种情况。如果您想在本地机器上删除它,您需要设置bin/rails db:environment:set rails_ENV=development,在rake db:drop之后,我知道,可能会有点晚,但是,如果它不能以标准rails的方式删除,您可以像 psql-u您的用户

然后输入密码 键入\l以列出所有数据库。
在我的例子中,psql拒绝删除单个表,我创建了额外的数据库,如“testdb”,键入\c testdb与之建立连接,然后键入drop database“olddb_name”;,然后创建数据库“olddb_name”;完成了

我在生产中使用Rails 5.2应用程序和PostgreSQL数据库时也遇到了同样的问题

我是这样解决的:

首先,停止使用数据库的每个会话以避免错误

另外,注销客户端上与数据库的所有连接(如果有)

启动PostgreSQL server,因为上面的kill操作停止了PostgreSQL server

sudo systemctl start postgresql
在附加生产参数的生产环境中删除数据库

rails db:drop RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
rails db:create RAILS_ENV=production
在生产环境中创建附加生产参数的数据库

rails db:drop RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
rails db:create RAILS_ENV=production
就这些


我希望这会有所帮助

你能尝试使用rails而不是rake-like-rails\u-ENV=production-DISABLE\u-DATABASE\u-ENVIRONMENT\u-CHECK=1 bin/rails-db:reset不走运,只是做了同样的事情。是的,如果你不断开数据库连接,并且可以回滚迁移,那么这就是一条路,但这就是我要找的!这是将生产数据库导入到开发环境后执行此操作的正确方法。谢谢。我最近第一次在开发中使用我的heroku产品heroku pg:pull DATABASE_URL my_app_name-app my_app_name-remote production,但我没有意识到我必须改变放弃它的方式。railsdb:environment:set rails\u ENV=development;rails数据库:删除