【发布时间】:2019-07-12 02:01:24
【问题描述】:
这是我的模型:
class Subscriber(models.Model):
...
tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, null=True)
...
这是生成的 SQL,根据sqlmigrate(以及手动检查数据库):
ALTER TABLE `myapp_subscriber` ADD CONSTRAINT `myapp_subscriber_tenant_id_b52815ee_fk_myapp_tenant_id` FOREIGN KEY (`tenant_id`) REFERENCES `myapp_tenant` (`id`);
我期待类似this:
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
使用ON DELETE CASCADE。
MySql(实际上是MariaDB)在我删除时抱怨:
SQL Error (1451): Cannot delete or update a parent row: a foreign key constraint fails
这是有道理的,因为没有ON DELETE CASCADE 子句。
为什么Django 2.1.5 不遵守ON DELETE CASCADE 子句?
【问题讨论】:
-
你检查过你的数据库权限了吗?
标签: python mysql sql django mariadb