2016-01-03 8 views
8

konnte ich eine Django PostgreSQL-Datenbank mit den folgenden Schritten zurück:Einfache Möglichkeit zum Zurücksetzen der Django PostgreSQL-Datenbank?

  1. löschen Migrationsdateien
  2. psql Eingabeaufforderung eingeben. Stellen Sie eine Verbindung zur Datenbank her. Drop Schema öffentliche Kaskade; Schema public erstellen;
  3. Schritt 2 schien leider meine Benutzerrolle und Rechte entfernt zu haben, also ging ich zurück zum Befehl psql command und erstellte diese neu.
  4. Schritt 2 bedeutete auch, dass ich die folgenden Befehle in der psql-Eingabeaufforderung ausführen musste: Gewähren der Verwendung für das öffentliche Schema public; Grant create on Schema public für die Öffentlichkeit;
  5. Schritt 2 gelöscht auch die Standard-Django Benutzer ich geschaffen hatte, so manage.py ich brauchte diese
  6. Python manage.py makemigrations & & Python

ich derzeit Änderungen an meinen Modellen bin neu einwandern und Testen jeder Änderung Ich habe keine Daten, die ich behalten muss. Gibt es einen einfacheren Weg als die oben genannten, um die Datenbank bei Migrationen wiederherzustellen?

Ich möchte zumindest Schritt 2 durch etwas anderes ersetzen, so dass ich die Schritte 3-5 überspringen kann.

Antwort

13

Wahrscheinlich ist der einfachste Weg, dies zu tun, die gesamte Datenbank neu zu erstellen. In Ubuntu sieht es so aus:

sudo su postgres 
psql 
drop database your_database_name; 
create database your_database_name with owner user_you_use_in_django; 
\q 
exit 

Das ist es. Sie haben eine saubere Datenbank. Um es betriebsbereit zu machen, müssen Sie Migrationen mit python manage.py migrate ausführen.

Wenn Sie nur an Ihrem Projekt arbeiten, können Sie Migrationen löschen und neu erstellen, wenn Sie möchten.

+1

Vielen Dank! Aber das vereinfacht die Schritte in meinem OP nicht viel. Ich muss immer noch Standard-Django-Benutzer neu erstellen und Benutzerrollen müssen immer noch so geändert werden, wie ich sie haben möchte. – user1283776

+0

Wenn Sie nach dem Wiederherstellen der Datenbank einige Daten benötigen, können Sie Fixtures oder einige Automatisierungsskripts verwenden. –

0

Ich verstehe nicht, warum Sie denken, dass Sie entweder Migrationen oder die Datenbank löschen müssen. Der entscheidende Punkt von Migrationen ist, dass sie auf dem aufbauen, was vorher gegangen ist; Sie sollten niemals löschen und neu starten. Machen Sie einfach Makemigrationen jedes Mal, wenn Sie eine Änderung vornehmen, und die Reihe von Migrationen sollte immer funktionieren.

Später können Sie eine Reihe von Migrationen in eine einzige komprimieren, aus Gründen der Geschwindigkeit, die wiederum nativ unterstützt wird. Löschen Sie niemals die Migrationen, die Sie bereits ausgeführt haben.

+1

Ich wollte Migrationen löschen, weil bei der Ausführung von manage.py migrate ein Fehler aufgetreten ist. Ich konnte nicht herausfinden, wie ich es beheben könnte. – user1283776

+2

Wenn Sie noch keine Datenbank für die Produktion haben, spielt das Entfernen der Migrationen und das erneute Erstellen keine Rolle. – cdvv7788

+0

Ich denke, das ist die falsche Einstellung. Entwickler sollten keine Angst vor irgendeinem Code haben. Sie müssen die Kontrolle über den Prozess haben, vor allem rechthaberische und manchmal unhandliche Rahmenbedingungen. Um ein ähnliches Problem gegenüber der Konvertierung von Typen zu lösen, was ein rein internes Problem für Django ist, ging ich zurück und schrieb (Migrations-) Geschichte um. Regierungen tun es die ganze Zeit, warum sollten Entwickler nicht? – codervince

Verwandte Themen