angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Заставить Alembic обнаруживать изменения типа столбцов и изменять длину строковых полей

Автоматическое обнаружение не обнаруживает изменения типа столбцов по умолчанию. Вы должны включить его, отредактировав файл alembic/env.py.

9 марта 2019
post main image

По умолчанию Alembic не изменяет длину строковых полей, я заметил это после изменения строкового поля:

description = Column(String(150), server_default='')

к..:

description = Column(String(250), server_default='')

Никаких изменений не произошло.

Похоже, что по умолчанию функция определения смены типа столбцов отключена, поэтому вы можете сначала проверить ее, а затем включить ее, добавив в контекст 'comp_type=True'.
Отредактируйте файл alembic/env.py и добавьте 'comp_type=True' в двух местах:

def run_migrations_offline():
    ...
    context.configure(
        url=url, target_metadata=target_metadata, literal_binds=True,
        compare_type=True # <--- here
    )
    ...


def run_migrations_online():
    ...
    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            compare_type=True # <--- here
        )
    ...

Теперь изменения типа столбцов будут обнаружены и корректно перенесены.

Ссылки / кредиты

Alembic - migration for String length change
https://eshlox.net/2017/08/06/alembic-migration-for-string-length-change

Auto Generating Migrations
https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect

Подробнее

Alembic SQLAlchemy

Оставить комментарий

Комментируйте анонимно или войдите в систему, чтобы прокомментировать.

Комментарии (1)

Оставьте ответ

Ответьте анонимно или войдите в систему, чтобы ответить.

avatar

good! Thanks