Alembi c Миграция для таблиц в SQLalchemy с столбцами index = true дает ошибку дублирования индекса - PullRequest
1 голос
/ 26 марта 2020

Моя предыдущая модель:

class sample(Base):
    __tablename__ = "sample"
    id = Column(BigInteger, primary_key=True,index=True)
    name = Column(String(30),index=True)

Моя последняя модель:

class sample(Base):
    __tablename__ = "sample"
    id = Column(String(length=1000), primary_key=True,index=True))
    name = Column(String(30),index=True)

Я выполнил команду alembic revision --autogenerate -m "changed id field type to string"

Сгенерированы мои сведения о миграции:

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))

При обновлении головки (alembi c головка обновления) я получаю следующую ошибку:

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)

Alembi c пытается удалить существующий индекс и пытается создать другой, но я не хочу создавать или удалять индекс снова, пока не произойдет какое-либо изменение в этом конкретном столбце. Как мне этого добиться ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...