it-swarm.com.de

Die Tabelle wurde gelöscht. Wie kann ich Django dazu bringen, sie neu zu erstellen?

Es gibt zwei Modelle Groups und Students und nur eine Tabelle für Groups. Die Students-Tabelle wurde gelöscht.

Wie kann Django es wieder herstellen? Wenn ich Makemigrationen mache, wird "Keine Änderungen festgestellt" ausgegeben.

Wenn ich auf der Admin-Seite auf die Schülertabelle klicke, wird eine Ausnahme ausgelöst:

relation "students_students" does not exist

Ich habe gerade meinen Migrationsordner gelöscht, die gesamte Datenbank gelöscht und dann die Migration für die App durchgeführt

python3 manage.py makemigration 
python3 manage.py migrate

und es kam zurück.

0
Andrews Opoku

In Django 1.7 können Sie versuchen:

1. Delete your migrations folder

2. In the database: DELETE FROM Django_migrations WHERE app = 'app_name'.
   You could alternatively just truncate this table.

3. python manage.py makemigrations

4. python manage.py migrate --fake

Wenn Sie in Django 1.9.5 arbeiten, ist dies die 100% ige Lösung für dieses Problem:

1. Delete your migrations folder

2. In the database: DELETE FROM Django_migrations WHERE app = 'app_name'.
   You could alternatively just truncate this table.

3. python manage.py makemigrations app_name

4. python manage.py migrate

Das funktioniert bei mir zu 100%!

20
Raúl EL

Es gibt keine einfache Möglichkeit, Django dazu zu bringen, eine Tabelle neu zu erstellen, die Sie manuell gelöscht haben. Sobald Ihre Datenbank manuell geändert wurde, weicht Djangos Ansicht der Datenbank (von Migrationen) von der Realität ab und es kann schwierig sein, sie zu beheben.

Wenn Sie den Befehl sqlmigrate ausführen, wird der zum Erstellen der Tabelle erforderliche SQL-Code angezeigt. Sie können die SQL in einer Datenbank-Shell ausführen. Angenommen, Ihr App-Name ist students und die Migration, die die Tabelle erstellt hat, war 00XX_create_students.py, dann würden Sie Folgendes tun:

./manage.py sqlmigrate students 00XX_create_students

Seien Sie vorsichtig, wenn Fremdschlüssel zur oder von der Schülertabelle vorhanden sind. Die Einschränkungen müssen ebenfalls erstellt werden.

8
Alasdair

Für Django 2 mache folgendes:

 1. Delete your migrations folder

 2. In the database: `DELETE FROM Django_migrations WHERE app = 'app_name';`

 3. python manage.py makemigrations app_name

 4. python manage.py migrate

 5. python manage.py migrate --fake default   //This was the key to solve my problem
6
Alex Jolig

Benennen Sie den gelöschten Tabellennamen in der Datei models.py in some_new_name um und führen Sie Folgendes aus:

python3 manage.py makemigration
python3 manage.py migrate

benennen Sie die Tabelle some_new_name erneut in den ursprünglichen Namen um und führen Sie sie aus

python3 manage.py makemigration
python3 manage.py migrate

gehen Sie schließlich zur Datenbankshell und löschen Sie die Tabelle some_new_name

0

Für Django 1.10.4 habe ich die Datei db.sqlite3 aus dem Projektordner gelöscht und dann die folgenden Befehle ausgeführt:

  1. python manage.py makemigrations app_name
  2. python manage.py migrieren
0
siddharth

Django 1.11.2 mit MariaDB, versehentliches Löschen der Datenbanktabelle. Versuchen Sie Folgendes, um eine Tabelle neu zu erstellen: 1/Löschen Sie alle Elemente mit Ausnahme von init . Py in Ihrem Verzeichnis app/migrations. 2/Wählen Sie * aus Django_migrations aus. lösche von Django_migrations wo app = 'yourapp'; 3/Überprüfen Sie, ob Ihr Modell in Ordnung ist, und führen Sie Folgendes aus: python manage.py makemigrations 4/python manage.py migrate

Funktioniert bei mir!

0
user2519486

Die Antwort, die für mich funktioniert hat, lautet wie folgt:

Angenommen, in Ihrer Datenbank wurde eine Tabelle eines Modells gelöscht und Sie müssen sie neu erstellen. Führen Sie dann die folgenden Schritte aus.

  • kommentieren Sie das Modell in models.py aus, das die gelöschte Tabelle erstellt (entweder die Modellklasse oder eine Zeile, die eine Tabelle wie a = models.ManyToManyField(...) erstellt).

  • lauf: python manage.py makemigrations <app-name>, wo <app-name> ist der Name der App, in der Sie models.py haben

  • lauf: python manage.py migrate --fake <app-name>

  • kommentieren Sie das Modell in models.py

  • lauf: python manage.py makemigrations <app-name>

  • lauf: python manage.py migrate <app-name> (ohne --fake)

und du solltest die tabelle wieder in der datenbank haben. Alle in der Tabelle enthaltenen Daten gehen jedoch verloren.

0
Bruno Vermeulen

Ich erstelle Tabelle manuell und es hilft.