title: Alembic Migration for tables in SQLalchemy with index=true columns gives duplicate index error
body: <p><strong>My Previous Model:</strong></p>
  
  <pre><code>class sample(Base):
      __tablename__ = "sample"
      id = Column(BigInteger, primary_key=True,index=True)
      name = Column(String(30),index=True)
  </code></pre>
  
  <p><strong>My Latest Model:</strong></p>
  
  <pre><code>class sample(Base):
      __tablename__ = "sample"
      id = Column(String(length=1000), primary_key=True,index=True))
      name = Column(String(30),index=True)
  </code></pre>
  
  <p>I ran the command <code>alembic revision --autogenerate -m "changed id field type to string"</code></p>
  
  <p><strong>My migrations details generated:</strong></p>
  
  <pre><code>def upgrade():
      op.create_index(op.f('ix_sample_name'), 'sample', ['name'], unique=False)
      op.drop_index('ix_sample_name', table_name='sample')
      op.alter_column('sample', 'id',
                 existing_type=mysql.BIGINT(display_width=20),
                 type_=sa.String(length=1000))
  </code></pre>
  
  <p><strong>I am getting thefollowing error while upgrading head (alembic upgrade head ):</strong></p>
  
  <pre><code>sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1061, "Duplicate key name 'ix_userdetails_firstName'")
  [SQL: CREATE INDEX `ix_userdetails_firstName` ON userdetails (`firstName`)]
  (Background on this error at: http://sqlalche.me/e/e3q8)
  </code></pre>
  
  <p>Alembic is trying to drop existing index and trying to create another one, but i dont want to create or drop the index again until there is any change in that particular column.
  How can I achieve this??</p>