Meine models.py
Datei enthält:Django on_delete = models.CASCADE keine Auswirkungen auf SQL-Ebene hat
class User(models.Model):
email = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=100)
create_time = models.DateTimeField(auto_now_add=True)
class Session(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
token = models.CharField(max_length=100, unique=True)
Wenn ich befehle python manage.py makemigrations
und dann befehlen python manage.py sqlmigrate <app_name> <migration_name>
ich sehe nichts, die "ON DELETE = CASCADE"
Die Migrationen funktionieren jedoch ohne Fehler, wenn ich python manage.py migrate
eingeben.
Nun, wenn ich an die MySQL-Tabelle gehen (mit SequelPro) und versuchen, eine Zeile für einen Benutzer zu löschen, die derzeit eine Sitzung Eintrag hat, erhalte ich folgende Fehlermeldung: ". Eine Zeile nicht entfernt wurde neu laden die Tabelle, um sicherzustellen, dass sich der Inhalt in der Zwischenzeit nicht geändert hat Überprüfen Sie die Konsole auf mögliche Fehler innerhalb der Primärschlüssel dieser Tabelle! ".
Wenn ich jetzt zu der Sitzungstabelle gehe und die Sitzungen dieses Benutzers lösche und dann versuche, die Zeile des Benutzers aus der Benutzertabelle zu löschen, wird sie ordnungsgemäß gelöscht. Dies zeigt an, dass ON DELETE = CASCADE
nicht wirklich auf der MySQL-Ebene funktioniert.
Wie kann ich das korrigieren?
das ist so ein bummer :( –