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

Maak Alembic kolomtypewijzigingen detecteren en de lengte van de tekenreeksenvelden wijzigen

Auto Detect detecteert standaard geen kolomtypewijzigingen. U moet dit aanzetten door het alembic/env.py bestand aan te passen.

9 maart 2019
post main image

Standaard verandert Alembic de lengte van de stringvelden niet, dit viel me op na het veranderen van een stringveld van:

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

aan:

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

Er zijn geen wijzigingen aangebracht.

Het blijkt dat de detectie van kolomtype verandering standaard uitgeschakeld is, zodat u het eerst kunt testen, en kan worden ingeschakeld door 'compare_type=True' toe te voegen aan de context.
Bewerk het bestand alembic/env.py en voeg op twee plaatsen 'compare_type=True' toe:

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

Nu worden de wijzigingen in het kolomtype gedetecteerd en op de juiste manier gemigreerd.

Links / credits

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

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen (1)

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.

avatar

good! Thanks