2016-01-03 13 views
8

udało mi się przywrócić bazę danych PostgreSQL Django, wykonując następujące kroki:Prosty sposób na zresetowanie bazy danych Django PostgreSQL?

  1. Usuwanie plików migracji
  2. Wpisz wiersz polecenia psql oraz SQL. Połącz się z bazą danych. upuść schemat publiczny kaskada; utwórz schemat publiczny;
  3. Krok 2 niestety, jak się wydaje, usunął moją rolę użytkownika i prawa, więc wróciłem do polecenia psql i ponownie je utworzyłem.
  4. Krok 2 oznaczał również, że musiałem uruchomić następujące polecenia w wierszu polecenia psql: nadaj użycie schematu publicznego do publicznego; dotacja utworzenia schematu publicznego na publiczny;
  5. Krok 2 skreśla się również standardowe użytkowników Django miałem stworzone tak, że muszę odtworzyć te
  6. Pythona makemigrations manage.py & & python manage.py migrować

Jestem obecnie dokonywania zmian w moich modeli i testowanie każdej zmiany. Nie mam żadnych danych, które muszę zachować. Czy istnieje łatwiejszy sposób niż powyższe, aby zresetować bazę danych, gdy migracja nie działa?

Chciałbym chociaż zastąpić krok 2 czymś innym, aby pominąć kroki 3-5.

Odpowiedz

13

Prawdopodobnie najprostszym sposobem na to jest odtworzenie całej bazy danych. W Ubuntu wygląda to następująco:

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

To wszystko. Masz czystą bazę danych. Aby był gotowy do pracy, musisz przeprowadzić migrację z python manage.py migrate.

Jeśli pracujesz nad samym projektem, możesz usunąć i ponownie utworzyć migracje, jeśli chcesz.

+1

Dziękujemy! Ale to wcale nie upraszcza kroków w moich OP. Nadal potrzebuję odtworzyć domyślnych użytkowników django i nadal muszę zmieniać role użytkowników na to, co chcę, aby były. – user1283776

+0

Jeśli potrzebujesz danych po odtworzeniu bazy danych, możesz użyć urządzeń lub skryptów automatyzacji. –

0

Nie rozumiem, dlaczego uważasz, że musisz usunąć migracje lub bazę danych. Cały punkt migracji polega na tym, że opierają się na tym, co zostało wcześniej; nigdy nie powinieneś usuwać i zacząć od nowa. Po prostu rób makemigracje za każdym razem, gdy dokonujesz zmiany, a seria migracji powinna zawsze działać.

Później można zgnieść zestaw migracji w jeden, ze względu na szybkość, który jest ponownie obsługiwany natywnie. Ale nigdy nie usuwaj już uruchomionych migracji.

+1

Chciałem usunąć migracje, ponieważ wystąpił błąd podczas uruchamiania programu manage.py migrate. Nie byłem w stanie wymyślić, jak to naprawić. – user1283776

+2

Jeśli nie masz jeszcze bazy danych na temat produkcji, usunięcie migracji i ponowne jej utworzenie nie ma większego znaczenia. – cdvv7788

+0

Myślę, że to niewłaściwe podejście. Programiści nie powinni obawiać się JAKIEGOKOLWIEK kodu. Muszą mieć pełną kontrolę nad procesem, szczególnie upartymi i czasami nieporęcznymi frameworkami. Aby rozwiązać podobny problem z konwersją typów, która jest czysto wewnętrznym problemem dla Django, przeszedłem i przepisałem historię migracji. Rządy robią to cały czas, dlaczego deweloperzy nie powinni? – codervince

Powiązane problemy