考えるとDjangoのモデル:現実世界でDjangoモデルのカスケード削除が失敗するのはなぜですか?
class ContainerOwner(models.Model): id = models.IntegerField() class Container(models.Model): owner = models.ForeignKey(ContainerOwner)
あなたが「ContainerOwner」に.delete()を呼び出した場合、それはその「ContainerOwner」が所有する「コンテナ」オブジェクトのすべてをカスケード削除するオブジェクト。
しかし私は実際の生活では、このカスケード削除が失敗すると思われるdjangoプロジェクトがあることがわかりました。散発的に、またシステムが大量にあるときに発生するようです。したがって、 "ContainerOwner"が削除された後、有効な "ContainerOwner"を持たない "Container"オブジェクトになります(これは不可能です。 'Container'は常に 'ContainerOwner'を持ちます)。
前に失敗していて、どのように発生しているのか説明できますか?カスケード削除は、アプリケーションまたはDBサーバーによるカスケード削除の途中で中止される可能性がありますか?
更新は、回答のフィードバックに基づいて質問:私たちは、 "ContainerOwner" オブジェクトのクエリセットを削除するには、削除クエリセットを使用している
2)当社は、MySQLでMyISAMテーブルを使用している
1)
3)私たちは非常に一般的な作用を有する
4)MySQLバックエンドどこContai」のDjangoのクエリセットnerOwner "オブジェクトは一度にすべて削除され、それらの" Container "オブジェクトもすべて削除する必要があります。これは1日に何十回も発生し、アプリケーションエラーの原因となる孤立した「コンテナ」オブジェクトが存在することに気づいています。削除の0.01%が孤児を抱えているように、削除の失敗率はごくわずかです。
ガイド付きの質問にお手伝いしてくれてありがとうございました。元の質問を一番下の回答で更新しました。 – MikeN