diff options
-rw-r--r-- | alembic/ddl/mysql.py | 2 | ||||
-rw-r--r-- | tests/test_autogen_indexes.py | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/alembic/ddl/mysql.py b/alembic/ddl/mysql.py index b93d29f..cb9d634 100644 --- a/alembic/ddl/mysql.py +++ b/alembic/ddl/mysql.py @@ -102,6 +102,8 @@ class MySQLImpl(DefaultImpl): # the name of the index may be the column name or it may # be the name of the FK constraint. for col in idx.columns: + if idx.unique: + continue if idx.name == col.name: conn_indexes.remove(idx) removed.add(idx.name) diff --git a/tests/test_autogen_indexes.py b/tests/test_autogen_indexes.py index ad839c8..e2d9b4e 100644 --- a/tests/test_autogen_indexes.py +++ b/tests/test_autogen_indexes.py @@ -586,6 +586,25 @@ class MySQLUniqueIndexTest(AutogenerateUniqueIndexTest): else: assert False, "unexpected success" + def test_unique_index_foreign_key(self): + m1 = MetaData() + m2 = MetaData() + + Table('unq_idx', m1, + Column('id', Integer, primary_key=True), + Column('x', String(20)), + Index('x', 'x', unique=True) + ) + + Table('unq_idx', m2, + Column('id', Integer, primary_key=True), + Column('x', String(20)), + Index('x', 'x', unique=True) + ) + + diffs = self._fixture(m1, m2) + eq_(diffs, []) + class NoUqReflectionIndexTest(NoUqReflection, AutogenerateUniqueIndexTest): reports_unique_constraints = False |