0

誤って、同じテーブルと列を参照する 2 つの外部キーを追加しました。次の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を使用して非カスケード制約のみを削除する方法はありますか?

4

1 に答える 1

0

試しましたか?

cons = ForeignKeyConstraint(columns=[table.c.fk],
                            refolumns=[table_b.c.id],
                            name="table_a_ibfk_1")
cons.drop(engine=migrate_engine)
于 2012-12-10T13:30:42.177 に答える