diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index f4377ba..c8ce23f 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -468,15 +468,9 @@ class ChangesetTable(object): self.deregister() self._set_parent(self.metadata) - def _meta_key(self): - return sqlalchemy.schema._get_table_key(self.name, self.schema) - def deregister(self): """Remove this table from its metadata""" - key = self._meta_key() - meta = self.metadata - if key in meta.tables: - del meta.tables[key] + self.metadata._remove_table(self.name, self.schema) class ChangesetColumn(object): diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py index ffadcdb..d4dae7a 100644 --- a/migrate/tests/changeset/test_changeset.py +++ b/migrate/tests/changeset/test_changeset.py @@ -508,10 +508,18 @@ class TestRename(fixture.DB): # object is inconsistent self.index.name = expected # TODO: Index DB check - + + def add_table_to_meta(name): + # trigger the case where table_name2 needs to be + # removed from the metadata in ChangesetTable.deregister() + tmp = Table(name, self.meta, Column(c_name, Integer)) + tmp.create() + tmp.drop() + try: # Table renames assert_table_name(table_name1) + add_table_to_meta(table_name2) rename_table(self.table, table_name2) assert_table_name(table_name2) self.table.rename(table_name1)