我错误地添加了两个引用相同表和列的外键。 SHOW CREATE TABLE table_a
看起来像是:
table_a | CREATE TABLE `table_a` (
`id` char(36) NOT NULL,
`fk` int(11) default NULL,
`created_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `fk` (`fk`),
CONSTRAINT `table_a_ibfk_1` FOREIGN KEY (`fk`) REFERENCES `table_b` (`id`),
CONSTRAINT `table_a_fkey` FOREIGN KEY (`fk`) REFERENCES `table_b` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
此时我唯一的解决方案是迭代列上的所有键/约束并删除它们,然后再添加级联键。
有没有办法只使用SQLAlchemy Migrate删除非级联约束?
答案 0 :(得分:0)
cons = ForeignKeyConstraint(columns=[table.c.fk],
refolumns=[table_b.c.id],
name="table_a_ibfk_1")
cons.drop(engine=migrate_engine)