Это моя модель:
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
?