web-dev-qa-db-ger.com

Rails 5 wie Sie die Postgres-Datenbank für die Produktion löschen oder löschen

Ich versuche, eine Produktionsdatenbank zu löschen, damit ich neu beginnen kann. Beim Upgrade von Rails 4 auf Rails 5 wird die Produktionsdatenbank jetzt vor versehentlichem Löschen geschützt. Beim Ausführen von rake db:reset wird folgende Fehlermeldung angezeigt.

/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)

Es besagt, dass das Hinzufügen der Umgebungsvariablen DISABLE_DATABASE_ENVIRONMENT_CHECK = 1 zum Befehl funktionieren sollte, dies jedoch nicht. Ich lasse es laufen und es tut nichts.

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

Weiß jemand was ich falsch mache? Schätze die Hilfe!

AKTUALISIEREN:

Mein Server wird mit kubernetes bereitgestellt. Ich vermute, dass ich die Datenbank nicht zurücksetzen kann, da der Server läuft.

14
Scott B

Versuchen Sie dies, es hat für mich funktioniert:

Rails_ENV=production rake db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1 

in einer einzigen Zeile.

20
Prashant

Dies geschieht auch, wenn Sie die Produktionsdatenbank in die lokale Datenbank sichern. Wenn Sie es auf dem lokalen Computer löschen möchten, müssen Sie bin/Rails db:environment:set Rails_ENV=development und nach rake db:drop einstellen.

24
yozzz

Aus Herokus Dokumentation zu Running Rake-Befehle :

Die Task db: reset wird nicht unterstützt. Heroku-Apps haben keine Berechtigung zum Löschen und Erstellen von Datenbanken. Verwenden Sie stattdessen den Befehl heroku pg: reset.

Anstatt also Rails oder rake db:reset zu verwenden, versuchen Sie Folgendes:

heroku pg:reset

6
Kostas Rousis

ich weiß, es könnte ein bisschen spät sein, aber wenn es nicht mit der Standardmethode Rails funktioniert, können Sie immer psql wie psql --u your_user verwenden.

geben Sie dann das Kennwort \l ein, um alle DB aufzulisten. in meinem Fall lehne psql ab, eine einzelne Tabelle zu löschen, und ich erstelle eine zusätzliche Datenbank wie 'testdb', tippe \c testdb, um eine Verbindung herzustellen, tippe dann drop database 'olddb_name'; und dann create database 'olddb_name'; und fertig!

1
Nickolay Efimov

Nun, obwohl dies ein alter Beitrag ist, aber für die zukünftige Bezugnahme können Sie tun 

    rake db:migrate VERSION=0

Und dann

    rake db:migrate
1
Marshall

Es funktioniert nicht, aber Sie sollten Befehle wie diesen ausführen

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

und wenn Sie die Tabelle fallen lassen, müssen Sie sie zurück erstellen. So erhalten Sie eine Fehlermeldung, wenn Sie keine Rechte für createdb haben. Hier Ihr Asnwer Postgres-Berechtigung zum Erstellen einer Datenbank auf Rake verweigert db: create: all

wenn Sie psql eingeben, verlassen Sie das Fenster, indem Sie \q eingeben.

Wie ich schon sagte, das ist nicht die Antwort, aber ich hoffe, dass dies Ihre Zeit spart, während Sie suchen. Weil ich jetzt genau dort bin. VIEL GLÜCK UND VIEL SPASS

1
user6163002

Kannst du unten einen Schuss geben?

Rails_ENV=production rake db:drop
Rails_ENV=production rake db:create

Dies ist eine alte Methode, aber so habe ich die Datenbank auf den ursprünglichen Zustand zurückgesetzt.

0
marahin