Mój plik models.py
zawiera:Django on_delete = models.CASCADE nie ma wpływu na poziomie SQL
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)
Kiedy rozkazuję python manage.py makemigrations
a następnie polecenie python manage.py sqlmigrate <app_name> <migration_name>
nie widzę niczego, co mówi "ON DELETE CASCADE ="
Jednak migracje działają bezawaryjnie, gdy wpisuję python manage.py migrate
.
Teraz, gdy idę do tabeli mysql (używając SequelPro) i starają się usunąć wiersz dla użytkownika, który aktualnie posiada wpis sesji, pojawia się następujący błąd: ". Jeden rząd nie został usunięty Odśwież tabela, aby upewnić się, że zawartość nie zmieniła się w międzyczasie. Sprawdź w konsoli, czy nie występują błędy w kluczach podstawowych tej tabeli: ".
Teraz, kiedy przechodzę do tabeli sesji i usuwam sesje tego użytkownika, a następnie próbuję usunąć wiersz użytkownika z tabeli użytkownika, usuwa on poprawnie. Oznacza to, że ON DELETE = CASCADE
nie działa na poziomie MySQL.
Jak mogę to poprawić?
czyli taki bummer :( –