Rails 5 Comment effacer ou supprimer la base de données Postgres de production

j'essaie de supprimer une base de données de production pour pouvoir recommencer à zéro. Lorsque je suis passé de rails 4 à rails 5, il protège maintenant la base de données de production de la suppression accidentelle. Il affiche le message d'erreur suivant lorsque j'exécute 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" =   [["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" =   [["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" =   [["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)

il est dit que mon ajout de la variable D'environnement DISABLE_DATABASE_ENVIRONMENT_CHECK=1 à la commande devrait fonctionner mais pas. Je le dirige et il ne fait rien.

<606723-x9dh4:/app# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rake db:reset       
  ActiveRecord::SchemaMigration Load (1.6ms)  SELECT "schema_migrations".* FROM "schema_migrations"

Quelqu'un sait ce que je fais mal? Apprécions l'aide!

mise à jour:

Mon serveur est déployé à l'aide de kubernetes. Je suppose que je ne suis pas en mesure de réinitialiser la base de données parce que le serveur est en cours d'exécution.

12
demandé sur Scott B 2016-11-24 02:06:35

6 réponses

Essayez cela, il a travaillé pour moi:

RAILS_ENV=production rake db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1 

dans une seule ligne.

17
répondu Prashant 2016-12-12 09:40:28

il arrive aussi quand vous déchargez la base de données de production dans local. Si vous voulez le supprimer sur la machine locale, vous aurez besoin de définir bin/rails db:environment:set RAILS_ENV=development et après rake db:drop

18
répondu yozzz 2018-05-15 12:43:11

à Partir de Heroku documentation sur les en cours d'Exécution Râteau commandes:

la tâche db:reset n'est pas supportée. Les applications Heroku n'ont pas la permission de laisser tomber et de créer des bases de données. Utilisez la commande Heroku pg:reset à la place.

Donc au lieu d'essayer de rails ou rake db:reset, essayez ceci:

heroku pg:reset

6
répondu Kostas Rousis 2017-09-24 16:19:41

Pouvez-vous donner ci-dessous une photo?

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

c'est une vieille méthode, mais c'est comme ça que je réinitialisais la base de données.

0
répondu marahin 2016-11-27 02:49:28

cela ne fonctionne pas mais vous devriez exécuter des commandes comme celle-ci

 bundle exec rake RAILS_ENV=production db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1

et quand vous déposez la table vous devez la créer de nouveau.Donc, vous obtiendrez erreur si vous n'avez pas les droits de createdb.Ici votre asnwer Postgres permission refusée pour créer une base de données sur rake db: create: all

lorsque vous tapez psql vous sortir de là en tapant \q.

Comme je l'ai dit ce n'est pas la réponse, mais j'espère que cela permettra d'économiser votre temps pendant que vous êtes recherche. Car je suis là maintenant. GL & HF

0
répondu Community 2017-05-23 12:34:58

Eh bien, même si c'est un vieux post, mais pour référence future, vous pouvez faire

    rake db:migrate VERSION=0

Et

    rake db:migrate
0
répondu Marshall 2018-08-27 18:03:58