Rails 5 Как очистить или удалить производственную базу данных postgres
Я пытаюсь удалить производственную базу данных, чтобы начать все заново. Когда я обновил rails 5 с rails 4, теперь он защищает производственную базу данных от случайного удаления. Он показывает следующее сообщение об ошибке, когда я запускаю rake db:reset
.
/app# rake db:reset
ActiveRecord::SchemaMigration Load (1.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
(1.6ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
(0.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
(0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
rake aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
/usr/local/bundle/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:51:in `check_protected_environments!'
/usr/local/bundle/gems/activerecord-5.0.0.1/lib/active_record/railties/databases.rake:11:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
Он говорит, что мое добавление переменной окружения DISABLE_DATABASE_ENVIRONMENT_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. Я предполагаю, что я не могу сбросить базу данных, потому что сервер работает.
6 ответов:
Попробуйте это сработало для меня:
RAILS_ENV=production rake db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1
В одной строке.
Это также происходит, когда вы сбрасываете производственную базу данных в локальную. Если вы хотите удалить его на локальной машине, вам нужно будет установить
bin/rails db:environment:set RAILS_ENV=development
, а послеrake db:drop
Из документации Heroku по запуску команд Rake :
Поэтому вместо того, чтобы пытаться иметьЗадача db:reset не поддерживается. Приложения Heroku не имеют разрешения на удаление и создание баз данных. Вместо этого используйте команду heroku pg: reset.
rails
илиrake db:reset
, попробуйте следующее:
heroku pg:reset
Можете ли вы дать ниже выстрел?
RAILS_ENV=production rake db:drop RAILS_ENV=production rake db:create
Это старый метод, но именно так я использовал для сброса базы данных на первозданный уровень.
Это не работает, но вы должны выполнять команды, как это
bundle exec rake RAILS_ENV=production db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1
И когда вы отбрасываете таблицу, вы должны создать ее back.So вы получите ошибку, если у вас нет прав на createdb.Здесь ваше разрешение asnwer Postgres отказано в создании базы данных на rake db: create: all
Когда вы набираете
Как я уже сказал, это не ответ, но я надеюсь, что это сэкономит ваше время, пока вы ищете. Потому что я прямо здесь, верно сейчас. GL&HFpsql
, вы выходите оттуда, набрав\q
.