2012-10-29 23 views
0

由于错误,我添加了两个引用同一个表和列的外键。该SHOW CREATE TABLE table_a的样子:在这一点上使用SQLAlchemy删除重复的外键迁移

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

你试过了吗?

cons = ForeignKeyConstraint(columns=[table.c.fk], 
          refolumns=[table_b.c.id], 
          name="table_a_ibfk_1") 
cons.drop(engine=migrate_engine)