Bonjour,
Je tente de faire un upgrade de creme sous docker et je rencontre un soucis:
Passage de creme-demo: latest (2.3RC1 - 2.3.6) en creme-demo:2.4.6
-> Sur le serveur test avec une V2.3.6 fraiche, l'upgrade c'est fait sans aucune difficulté.
-> Sur le serveur de prod j'ai le message suivant : django.db.utils.OperationalError: (1050, "Table 'creme_core_relationtype_subject_forbidden_properties' already exists")
A savoir que la bdd est la depuis la V2.1 minimum.
j'ai regardé dans la bdd existante et cette table n'existe pas.
Une piste?
Merci d'avance!
Bonjour, merci pour la réponse,
En gros de tête je crois qu'on a fait :
2.1 vers 2.2 en virtualenv
ensuite docker, migration vers 2.3, puis mise à jour vers 2.3.6
Jusque là tout fonctionne a merveille depuis 1 an (avec un docker-compose.yml adapté)
Je viens de tester sur un autre serveur, avec la bdd de prod et j'ai le même soucis.
edit: si je supprime en direct la table, la migration la recrée et ensuite j'ai :
django.db.utils.OperationalError: (3780, "Referencing column 'relationtype_id' and referenced column 'id' in foreign key constraint 'creme_core_relationt_relationtype_id_597a4664_fk_creme_cor' are incompatible.")
Applying creme_core.0111_v2_4__rtype_forbidden_properties...
je vais investiguer plus avec vos information.
Bonne soirée!
Si vous utilisez MySQL/MariaDB, la gestion des contraintes est encore très perfectible malheureusement (genre les contraintes relatives à une table qui sont parfois conservées meme quand ladite table est supprimée...)
Salut,
Merci d'avoir pris le temps de partager la solution, ça va clairement dépanner quelqu'un d'autre un jour !
Petit conseil pour la prochaine fois si ça devait re-arriver : plutôt que l'INSERT à la main dans `django_migrations`, autant utiliser directement `migrate --fake`, ça fait la même chose mais sans risquer une erreur bête sur l'id ou le format de la date :
creme migrate creme_core 0111_v2_4__rtype_forbidden_properties --fake --settings=my_project24.settings
Et dans ce genre de manip, je fais toujours un petit `mysqldump` avant de toucher à la table des migrations, juste au cas où — une correction pas tout à fait juste peut créer des soucis ailleurs qui sont ensuite bien plus galères à retrouver.
Pour la cause du bug en lui-même, ça sent le grand classique : un conteneur qui redémarre avec une image mise à jour avant que les migrations de l'ancienne version aient fini de tourner, ou un rollback de conteneur sans rollback de la base derrière. Ça vaut peut-être le coup de rejeter un œil à tes logs de déploiement autour de ta bascule 2.3 → 2.4, pour éviter la surprise à la prochaine grosse mise à jour. Et comme le disait genglert, vu que `creme-demo` n'est pas pensée pour la prod, à terme ça vaut le coup de passer par une install virtualenv + pip pour avoir la main plus finement sur les migrations.
Bon courage pour la suite !