django+Süd: migrate-Befehl nicht erstellen Tabelle in der Datenbank
Ich habe eine strnage problem.
Meine django-Projekt hat Modul myapp/application. Mein Projekt verwendet Süden zu tun, die schema-Migrationen.
Auf dem localhost habe ich ./manage.py schemamigration myapp --initial
, dann habe ich migrate-Befehl.
Aber, wenn in der Produktions-Umgebung, die ich ausführen migrate
Befehl, dies nicht zu erstellen der entsprechenden Tabelle (Anwendung von Modellen) in der Datenbank.
Es ist seltsam, weil wenn ich ausführen migrate --list
Anwendung hat zu migration und Sie sind alle markiert (mit einem * - symbol ).
So, ich denke über das löschen der Anwendung und Neuerstellen von Grund auf (mit entsprechenden Migrationen). Gibt es eine bessere Lösung?
BEARBEITEN:
ich habe versucht, löschen Sie die Anwendung und erstellen Sie es neu von Grund auf. Also ich habe auch das löschen von Tabellen der Anwendung in der Datenbank (auf localhost und auf Produktions-server), und nachdem ich Sie ausgeführt haben:
schemamigration myapp --initial
Befehl auf localhost
migrate myapp
Befehl auf localhost
migrate myapp 0001 --fake
auf Produktions-server
aber Südens nicht schaffen, die Tabellen der Anwendung in der Datenbank des Produktionsservers.
migrate ... --fake
? --fake
macht Süden nur daneben migration als erfolgreich, aber berühren Sie nicht die tatsächlichen DB-schema.InformationsquelleAutor Giovanni Bitliner | 2012-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie versehentlich oder absichtlich gelöscht eine Tabelle in der DB und Ihr versuchen zu laufen
./manage migrate myapp
Dies wird nicht erstellen Sie die gelöschten Tabelle in deiner DB.Da Süd nicht berühren Basis mit Ihrem DB.
In Fall, dass Sie möchten, neu erstellen Sie Ihre Tabelle. Migrieren des Schemas, zu einer vorherigen version migrieren und es die Letzte. Bitte benutzen Sie den untenstehenden code entsprechend
Hinweis: 002 Ihrer bisherigen migration version.
InformationsquelleAutor Pawan Kumar
wenn Sie gelöscht haben Ihre Tabellen sollten Sie nicht ausgeführt werden
--fake
es sei denn, Sie haben einenmanage.py syncdb
ersten. Keine Tabelle, die Sie sollten in der Lage sein zu laufenpython manage.py migrate myapp
und mit ihm getan werden (oder einmanage.py syncdb
). Die erste migration erstellt von--initial
hat create table-Anweisungen.--fake
explizit sagt Süden, um nicht alles tun, aber so tun, es migriert (DB-änderungen) und markieren Sie die history-Tabelle als solche.syncdb
oderschemamigration --initial
. Dann habe ich das Projekt bereitstellen. Und dann? Es ist weiterhin nicht erstellen Datenbank-Tabellen auf Produktions-server mit dieser Methode.wenn alle Tabellen gelöscht werden, werden nur ausgeführt
migrate
erstellen die Tabellen, wenn Sie die0001_initial
migration-Dateien in die app-Verzeichnisse. Stellen Sie sicher, dass diesouth_migrationhistory
Tabelle ist aktuell und hat keine Einträge für Ihre apps, die Sie zurücksetzen.Ich habe beschlossen, es nicht zu verwenden-Süd für die Anwendung, weil ich nicht noch ändern Modelle Anwendung. So läuft syncdb auf Produktions-server habe ich das problem gelöst. Ich werde in den Süden für die Anwendung, wenn ich eine änderung models.py und ich habe zu tun-Migrationen. Vielen Dank für die Hilfe.
InformationsquelleAutor Yuji 'Tomita' Tomita
Ich weiß, das ist ein bisschen spät, aber hatte das gleiche problem und ich fand, dass das problem war, dass meine manage.py war der Hinweis auf die falsche settings Datei, damit falsche DB. Sicherzustellen, dass Ihre manage.py auf die richtigen Einstellungen-Datei und Migrationen sind an die richtige DB. Dies kann auftreten, wenn Sie mehrere manage.py Dateien oder mehrere Dateien Einstellungen.
InformationsquelleAutor lenny