私のmodels.py
ファイルには次のものが含まれています。
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)
python manage.py makemigrations
をコマンドしてからpython manage.py sqlmigrate <app_name> <migration_name>
をコマンドすると、「ON DELETE = CASCADE」というメッセージが表示されません。
ただし、python manage.py migrate
と入力すると、移行は失敗せずに機能します。
ここで、(SequelProを使用して)mysqlテーブルに移動し、現在セッションエントリを持っているユーザーの行を削除しようとすると、次のエラーが発生します: "One行は削除されませんでした。テーブルをリロードして、その間に内容が変更されていないことを確認してください。このテーブルの主キー内で発生する可能性のあるエラーがないかコンソールを確認してください! "。
ここで、セッションテーブルに移動してこのユーザーのセッションを削除してから、ユーザーテーブルからユーザーの行を削除しようとすると、正しく削除されます。これは、ON DELETE = CASCADE
が実際にはMySQLレベルで機能していないことを示しています。
どうすれば修正できますか?