1# Adding the unique constraint will lead to the index being destroyed and a new 2# unique index being created. 3# To not rely on this implicit behavior, we explicitly delete the old index, 4# and then create the new indexes. 5# This is not really needed for the upwards migration, but if we can't be sure 6# about the indexes names, it gets harder to do the DOWN migration later. 7# Therefore we do this magic manually. 8UP_SQL = """ 9ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk; 10ALTER TABLE afe_shards_labels DROP INDEX shard_label_id_fk; 11ALTER TABLE `afe_shards_labels` ADD UNIQUE `shard_label_id_uc` (`label_id`); 12ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk 13 FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`); 14""" 15 16# Normally removing unique constraints is done just by deleting the index. 17# This doesn't work here, as the index is also needed for the foreign key. 18# Making an index back non-unique doesn't work in mysql. 19# Therefore delete the foreign key, delete the index, re-add the foreign key. 20DOWN_SQL = """ 21ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk; 22ALTER TABLE afe_shards_labels DROP INDEX shard_label_id_uc; 23ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk 24 FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`); 25""" 26