2012-10-29 26 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)