Django没有设置MySQL ON DELETE = CASCADE

Imr*_*zad 3 django django-admin

我正在使用Django 1.3和MySQL 5.5数据库后端.我的假设是,当通过syncdb构建数据库时,Django默认模拟相关对象的ON DELETE CASCADE效果.但是,检查数据库会发现ON DELETE属性实际上设置为"RESTRICT".这是一个错误吗?由于我无法删除相关记录,因此在删除具有相关对象的对象时,我会在djang-admin中收到IntegrityError消息.

谢谢

Ian*_*and 5

Django 在Python中模拟 ON DELETE CASCADE - 这就是为什么不需要在数据库表上设置它.实际上,设置RESTRICT甚至可能有意义,因为这意味着您不会在管理员中没有被警告的情况下意外删除任何相关对象.

在您的情况下,似乎您可能设置了Django不知道的外键约束 - 或者您可能尝试通过原始SQL删除; 我无法从你的问题中说出来.

如果问题是您无法从管理员或ORM中删除,则需要确保正确定义了模型.django将负责收集相关对象并执行级联.

如果问题是删除不适用于原始SQL,那么您将需要首先手动删除相关对象,或者放宽SQL约束 - 在这种情况下,将其更改为级联可能是正确的解决方案.


Imr*_*zad 2

Django 1.3.1 由于某种原因似乎无法将 ON DELETE CASCADE 属性应用于表。它可能与 Windows 上运行的 MySQL-python 1.2.3 接口有关。解决此问题的唯一其他方法是通过自定义 SQL