Update v11 v12 : Erreur SQL

Bonjour à tous,
Je prépare une migration v11 -> v12.0.5 et lors de la mise à jour j’ai une jolie erreur SQL
La requete
ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet(rowid);
me retourne
Cannot add or update a child row: a foreign key constraint fails (dolitest.#sql-525f_384905, CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid))

Si j’enlève la ligne 310 du fichier migration/11.0.0-12.0.0.sql ça passe tout seul.
On peut lier commande_det et commande_fournisseurdet ? Pour quoi faire nativement ?
@+

Je pense avoir trouvé. Il doit s’agir d’un bug du module CommandeClient=>CommandeFournisseur qui renseignait à zéro le champ fk_commandefourndet certainement à un moment. Je n’ai le bug que là où il y a eu ce module.
La solution a été de faire un update sur la table :
UPDATE llx_commandedet SET fk_commandefourndet=NULL WHERE fk_commandefourndet=0
@+

1 « J'aime »

Bonjour @Philazerty
Est ce que le module ATM Commande fournisseur depuis une commande client est installé ?
Il sert justement à générer une commande fournisseur depuis celle d’un client et on peut raisonnablement supposer qu’il y a un lien entre les 2 tables
Cordialement
Eric

1 « J'aime »

@Philazerty
Comme quoi :wink:

Bonjour :slightly_smiling_face:

Pour passer de v10 à v13 j’ai eu cette erreur aussi.
J’ai donc tenté :

UPDATE llx_commandedet SET fk_commandefourndet=NULL WHERE fk_commandefourndet=0

Puis de faire le fameux

ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid);

Mais j’ai toujours l’erreur

Cannot add or update a child row: a foreign key constraint fails (doli.#sql-3e83_10dd, CONSTRAINT fk_commandedet_fk_commandefourndet FOREIGN KEY (fk_commandefourndet) REFERENCES llx_commande_fournisseurdet (rowid))

Finalement tout est rentré dans l’ordre comme par magie :rofl: