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

Hacer que el Alambique detecte cambios en el tipo de columna y cambie la longitud de los campos de las cadenas.

La detección automática no detecta los cambios de tipo de columna de forma predeterminada. Debe activarlo editando el archivo alembic/env.py.

9 marzo 2019
post main image

Por defecto Alambique no cambia la longitud de los campos de cadena, lo he notado después de cambiar un campo de cadena de:

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

a:

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

No se hicieron cambios.

Parece que la detección de cambios en el tipo de columna está desactivada de forma predeterminada, por lo que puede probarla primero, y puede activarse añadiendo 'compare_type=True' al contexto.
Edite el archivo alembic/env.py y añada 'compare_type=True' en dos lugares:

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

Ahora los cambios de tipo de columna se detectarán y migrarán correctamente.

Enlaces / créditos

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

Deje un comentario

Comente de forma anónima o inicie sesión para comentar.

Comentarios (1)

Deje una respuesta.

Responda de forma anónima o inicie sesión para responder.

avatar

good! Thanks