Make Alembic détecte les changements de type de colonne et modifie la longueur des champs de chaîne de caractères
La détection automatique ne détecte pas les changements de type de colonne par défaut. Vous devez l'activer en éditant le fichier alembic/env.py.
Par défaut, Alembic ne change pas la longueur des champs de chaîne de caractères, j'ai remarqué ceci après avoir changé un champ de chaîne de caractères de :
description = Column(String(150), server_default='')
à :
description = Column(String(250), server_default='')
Aucun changement n'a été apporté.
Il semble que la détection de changement de type de colonne est désactivée par défaut, vous pouvez donc la tester en premier, et vous pouvez l'activer en ajoutant'compare_type=True' au contexte.
Editez le fichier alambic/env.py et ajoutez'compare_type=True' à deux endroits :
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
)
...
Maintenant, les changements de type de colonne seront détectés et correctement migrés.
Liens / crédits
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
En savoir plus...
Alembic SQLAlchemy
Récent
- Graphique de séries temporelles avec Flask, Bootstrap et Chart.js
- Utiliser IPv6 avec Microk8s
- Utilisation de Ingress pour accéder à RabbitMQ sur un cluster Microk8s
- Galerie vidéo simple avec Flask, Jinja, Bootstrap et JQuery
- Planification de base des tâches avec APScheduler
- Un commutateur de base de données avec HAProxy et HAProxy Runtime API
Les plus consultés
- Planification de base des tâches avec APScheduler
- Utilisation des Python's pyOpenSSL pour vérifier les certificats SSL téléchargés d'un hôte
- LSTM optimisation en plusieurs étapes hyperparameter avec Keras Tuner
- Empêcher l'envoi de messages en double à un système distant
- Documentation d'une Flask RESTful API avec OpenAPI (Swagger) utilisant APISpec
- Test des exemples de publication RabbitMQ Pika