Ich habe eine Django-Site, auf der ich an meinem Entwickler arbeite, ihn in ein Online-Repo bei bitbucket schiebe und ihn dann mit auf meinen Produktionsserver ziehe

git pull --no-edit origin master

Wenn ich das Repo überprüfe, spiegeln die Migrationsdateien genau das wider, was sich auf meinem lokalen Computer befindet. Wenn ich jedoch auf meinen Server ssh und dieselben Migrationsdateien betrachte, sind sie unterschiedlich ...

Warum sollten diese Dateien nicht gleich sein und wie kann ich sicherstellen, dass sie gleich sind? Dies verursacht Probleme, wenn ich versuche, meine Daten aus meiner lokalen Datenbank zu sichern und in die Hauptdatenbank zu stellen.

2
Joff 24 Dez. 2015 im 08:23

2 Antworten

Beste Antwort

Was mit Ihnen passiert, ist wahrscheinlich, dass Ihre lokalen Dateien in einem Moment nicht mit den Dateien des Servers überschrieben wurden. Das Beste, was Sie tun können, ist, alles genau so zu platzieren, wie es auf dem Server vorhanden ist. Das zu tun:

git fetch origin
git reset --hard origin/master

Abgesehen davon würde ich nicht empfehlen, die Migrationsdateien auf den Server hochzuladen. In Django sind sie wie Build-Dateien. Berücksichtigen Sie, wenn Sie in der Entwicklung Änderungen an Ihrem Modell vornehmen, müssen Sie die Migrationen durchführen und erhalten eine neue Datei wie 0002_auto _ *****. Stellen Sie sich vor, Sie möchten diese Änderung in der Produktion nicht, müssen eine neue Migration in der Entwicklung durchführen und erhalten eine weitere Migrationsdatei 0003_auto _ *****. Sie wollen das nicht in Ihrer Produktionsumgebung, oder?

Um die Ordnermigration zu ignorieren, müssen Sie sie nur zu .gitignore hinzufügen.

1
hoaphumanoid 24 Dez. 2015 im 08:15

Migrationsdateien können auf verschiedenen Computern unterschiedlich sein. Zum Beispiel erstellen Sie auf lokaler Ebene ein Modell, machen dann Migrationen und migrieren dann. Dann entscheiden Sie sich für die Produktion. Dann nehmen Sie auf lokaler Ebene Änderungen vor, migrieren und migrieren Änderungen. Dann nehmen Sie weitere Änderungen an Modellen vor Ort vor und wiederholen Makemigrationen und migrieren. Dann sagen Sie dies viermal erneut und entscheiden sich dann für Repo und Repo von Repo in der Produktion Jetzt müssen Sie also Migrationen in der Produktion vornehmen und haben wahrscheinlich nur eine Migration für alle 4 Änderungen.

Eine Sache, an die Sie denken sollten, ist, dass Sie, wenn Sie bereits über die erforderlichen Tabellen verfügen, aber Migrationen haben, die nicht ausgeführt werden müssen, diese wie folgt migrieren können:

./manage.py migrate appname 0001 --fake

Diese Migration wird also angewendet, ohne die Struktur wirklich zu ändern (da sie bereits Ihren Anforderungen entspricht).

0
Mogsdad 21 Jän. 2016 im 22:22