1

Je travaille sur un projet Django qui est en ligne depuis des mois. Aucun changement au fichier de paramètres ou à l'environnement lui-même.Django migrate travaille sur une production locale mais pas sur Elastic Beanstalk

J'ai récemment ajouté un champ à un modèle, mais lorsque je le déploie dans mon environnement Amazon Elastic Beanstalk, il ne parvient pas à migrer les modifications dans la base de données. Je reçois le message d'erreur suivant:

Synchronizing apps without migrations: 
    Creating tables... 
     Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    No migrations to apply. 
    Your models have changes that are not yet reflected in a migration, and so won't be applied. 
    Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. 

Maintenant, le message d'erreur peut sembler assez évident, mais chose est que je fait une copie de la base de données à partir du serveur de production à mon serveur de base de données locale et essayé à nouveau la commande migrate, Voila travaille sur local. Aucun message d'erreur concernant les modèles en cours de modification. Lorsque j'exécute makemigrations, je reçois No changes detected.. J'ai également essayé makemigrations <app> pour chaque application dans mon projet. Dit toujours No changes detected.

donc un résumé:

J'ai apporté des modifications à un modèle, je fait de nouvelles migrations, j'essayé de migrer sur le serveur de production et le résultat était une erreur. J'ai essayé sur le serveur local avec une copie exacte de la base de données, et cela fonctionne très bien.

Des idées?

EDIT:

Il semble que cela a quelque chose à voir avec ImageField. Le champ que j'ai ajouté à mon modèle était un ImageField, mais quand je l'ai retiré, puis testé en ajoutant à la fois CharField et FileField la migration a bien fonctionné.

Lorsque j'ai ensuite modifié le FileField et l'a transformé en ImageField l'erreur migrate a renvoyé.

Très déroutant.

Répondre

0

J'ai été capable de résoudre ce problème en reconstruisant complètement mon environnement sur Amazon et en important ma version locale de la base de données vers la nouvelle instance RDS/MYSQL.

Ce n'est pas une solution "appropriée" car elle ne sait pas vraiment pourquoi cela se produit. J'ai synchronisé et resynchronisé ma base de données des dizaines de fois. Je suis retourné à un fichier de migration synchronisé avec succès, mais dès que j'ai ajouté mon ImageField à mon modèle, j'ai eu la même erreur quand j'ai essayé de manage.py migrate. Après la reconstruction de l'environnement, les migrations fonctionnent à nouveau.