鑑於Django模型:爲什麼現實世界中的Django模型級聯刪除失敗?
class ContainerOwner(models.Model): id = models.IntegerField() class Container(models.Model): owner = models.ForeignKey(ContainerOwner)
如果您在「ContainerOwner」調用.delete()反對將級聯刪除所有由「ContainerOwner」所擁有的「容器」的對象。
但我發現在我的真實生活django項目中,有些時候級聯刪除似乎失敗了。它似乎偶爾發生,當系統處於高容量時。因此,在「ContainerOwner」已被刪除後(這應該是不可能的,Container會始終有一個'ContainerOwner'),最終會出現沒有有效的「ContainerOwner」的「Container」對象。)
有沒有人看過這種類型之前的失敗,並可以解釋它是如何發生的?應用程序或數據庫服務器進行級聯刪除的過程中,級聯刪除是否可以半途殺死?
更新問題,根據答案反饋:
1)我們正在使用的MyISAM與MySQL
2)我們正在使用的查詢集刪就刪 「ContainerOwner」 對象的查詢集
3)MySQL後端
4)我們有一個非常共同行動,其中包含3個的「Django的查詢集nerOwner「對象一次全部刪除,並且所有」容器「對象也應該刪除。這種情況每天發生幾十次,我們只是注意到存在導致應用程序錯誤的這些孤立的「容器」對象。看起來只有非常小的百分比的刪除失敗,例如0.01%的刪除導致有一些孤兒。
感謝您對指導性問題的幫助,我用底部的答案更新了原始問題。 – MikeN