Django migrieren --fake und --fake-anfängliche erklärt
Ich habe ein Benutzer von Django für ungefähr 2 Jahre jetzt, und es ist ein feature, das ich schon immer Angst vor der Anwendung : vorgetäuscht Migrationen.
Ist, habe ich mich so ziemlich überall und die meisten Informationen, die ich bekommen kann, ist aus der Dokumentation, wo es heißt:
--fake
Erzählt Django zu markieren, die Migrationen als angewandte oder
nicht zugeordnete, aber ohne dem eigentlichen ausführen der SQL ändern, um Ihre
Datenbank-schema.Dies ist für fortgeschrittene Anwender gedacht um die Bearbeitung der aktuellen
migration Stand direkt, wenn Sie manuelles übernehmen von änderungen;
gewarnt, die mit der Option --fake-läuft die Gefahr, dass die migration Staat
Tabelle in einem Zustand, wo eine manuelle Wiederherstellung benötigt werden, um
Migrationen korrekt ausgeführt.
--fake-erste
Ermöglicht Django überspringen einer app, die anfängliche migration, wenn alle Datenbank
Tabellen mit den Namen aller Modelle erstellt, die von allen CreateModel
Operationen, die migration bereits vorhanden ist. Dafür ist diese option gedacht
für den Einsatz bei der ersten Ausführung von Migrationen, die für eine Datenbank, die
preexisted die Verwendung von Migrationen. Diese option wirkt sich jedoch nicht überprüfen
nach übereinstimmenden Datenbank-schema über matching-Tabelle Namen und so ist
nur sicher zu verwenden, wenn Sie sicher sind, dass Ihr vorhandenes schema
mit der übereinstimmt, die aufgezeichnet wird in Ihrer ersten migration.
Ich die Allgemeine Idee, und warum würde man wollen, um diese Funktion zu nutzen. Aber, ich verstehe nicht den Teil, wo er sagt, dass dies bestimmt nur für fortgeschrittene Benutzer.
Kann mir jemand erklären, was passiert hinter den kulissen und warum manuelle Wiederherstellung benötigt werden würde.
HINWEIS
Ich bin nicht auf der Suche nach der genauen raw-SQL-Abfragen, die ausgeführt wird, wenn das vortäuschen einer migration. Ich bin nur auf der Suche nach eine Allgemeine Vorstellung von dem, was passiert hinter der Bühne und vielleicht ein Beispiel dafür, warum das vortäuschen einer migration
Ergebnis wäre ein Zustand, wo makemigrations
würde nicht richtig funktionieren.
InformationsquelleAutor scharette | 2017-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorstellen, dass Sie begonnen zu ändern Sie eine Anwendung in der letzten Woche, vielleicht, weil Sie einen Fehler gefunden oder Sie erweitert es durch ein Feld oder eine Spalte. Heute haben Sie ein update erhalten und Sie haben ein problem, denn es ist eine Wanderung, die fügt ein Feld, das ist immer noch in Ihrer Datenbank und können nur andere Teile, die migration. Schauen Sie auf Ihre SQL Inhalt von Laufenden
vergleichen Sie den Inhalt mit dem Wechsel Letzte Woche gemacht und ein entfernen oder kommentieren Sie einen Befehl, der immer noch angewendet und kann nicht wiederholt werden. Führen Sie alle verbleibenden SQL manuell. Mark, der migration, wie es wäre automatisch angewendet:
Wenn Sie etwas zu brechen, wohl niemand helfen können Sie und weder Sie oder migration system kennt den aktuellen Zustand der Datenbank. Daher backup, Notizen zu schreiben, verwenden Sie einen Sandkasten und arbeiten genau.
BEARBEITEN Die migration Tabelle
django_migrations
ist eine einfache Liste der angewandten Migrationen in alle apps. Zeilen dieser Tabelle sollte immer in einem synchronisierten Zustand mit der Datenbank-Struktur. Migrationen angewendet werden kann, die von einem normalen migrieren. (oder un-angewendet, indem eine umgekehrte migration zu einem älteren Zustand, in der Regel mit Datenverlust natürlich) Ein fake migration gilt die änderung nur für die django_migrations Tabelle.Migration (Datei) ist eine Beschreibung der Schrittweite und Informationen möglich sein, bewerten Sie den Unterschied in den Modellen, die seit der letzten migration, die während der Ausführung
makemigrations
. Es ist genug, um auch in dem Fall, in dem einige Tische waren un-gelang zunächst und konnte Sie wurde später gelang.BEARBEITEN Ein Beispiel, wie
sqlmigrate
und--fake
könnte verwendet werden, um fix broken Datenbank-Migrationen (zum wiederherstellen eines gelöschten Tabelle).Ja, die nützliche Frage. Erklärt.
InformationsquelleAutor hynekcer