The migration tries to delete the old key:
However, sql_index_exists() ignores UNIQUE keys as per doc block:
Check if a specified index exists in table. Does not return PRIMARY KEY and UNIQUE indexes.
Since the key we are trying to delete is a unique key, the function returns false and we skip the drop query (which wouldn't even work on some DB backends?)
So we actually need to implement sql_unique_index_drop()