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