Log d'erreur ALTER TABLE column already exists

Bonjour,

J’ai un bug depuis un bout de temps lorsque j’enregistre mon code sur mon objet métier HrNewEmployee. Il y a des ALTER TABLE qui sont effectué 2 fois d’affilée. le premier est OK, et le deuxième a une erreur (logique vu que la colonne existe déjà à cause du premier ALTER TABLE).
Voici l’erreur :

Le truc, c’est que cette erreur était présente avant que j’arrive sur ce projet. J’ai beaucoup cherché, mais je n’ai pas trouvé. Donc je vous demande :
A part le code, où sont les endroits où on peut indiquer un ALTER TABLE à faire pour un objet métier ?

image

Les alter table ne sont faits que lorsqu’on ajoute un attribut à un objet ou quand on renomme le nom de colonne ou le type d’un attribut (et le save sur un objet essaie de “réaligner” tout ça au cas où).

Je pense que cette erreur doit être révélatrice d’un autre pb. Ex: de mémoire, PostgreSQL n’autorise pas tout type d’ALTER, ex passer une colonne de type varchar à integer s’il y a des valeurs autres que des entiers dans cette colonne ne peut pas se faire. etc.

Vérifiez manuellement votre table vs le paramétrage jusqu’à cerner ce qui pose pb

Je vais regarder ça.

Par contre je ne comprends pas pourquoi dans logs, l’ALTER TABLE est effectué 2 fois d’affilée. Selon moi, si c’était un problème de type, il y aurait un crash dès la première fois. Or, le premier passe sans soucis.

Du coup, je comprends pas pourquoi ? (Même le premier ALTER TABLE qui fonctionne, je ne comprends pas pourquoi il est effectué sachant que j’ai au total 3 colonnes qui sont pareilles et que l’erreur + ALTER TABLE ne se produit que sur 2 d’entre elles).

Commencez par cerner la cause de votre pb en comparant la table au paramétrage, et le cas échéant en tentant les ALTER manuellement, et ensuite on verra si ça peut expliquer les symptômes visibles que vous décrivez.

Pour rappel Simplicité ajoute et modifie des colonnes sur les tables mais ne supprime jamais rien (pour éviter de perdre des données en cas de mauvaise manip). Ca peut donc aboutir à des pbs bizarres dans des cas d’ajouts/suppressions logiques multiples ou de renommages successifs, etc. surtout que, si certaines bases comme MySQL font les ALTER en mode “best effort”, d’autres comme PostgreSQL ou Oracle bloquent sur certaines choses comme la présence de données incompatibles lors d’un ALTER de type.

Les erreurs DB “already exists” sont juste des warnings, en rien des erreurs d’un point de vue fonctionnel.

Vous avez peut être des héritages ou des objets qui pointent sur la même table, et Simplicité boucle/refait l’ALTER quand vous modifiez un attribut lié aux 2 objets.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.