Erreur création d'expédition : Unknown column 'e.billed' in 'field list'

Bonjour à tous,

Pour vous donner un peu de contexte, j’utilise Dolibarr depuis plusieurs années via une installation fournie par IONOS qui m’empêchait de faire les mises à jour. J’ai donc réinstallé une version directement sur le serveur sans passer par « l’aide » IONOS avec une sauvegarde de ma base de données pour me créer un environnement test. Le tout était en 6.0.2 à l’époque. Pour respecter les normes FEC j’ai fait progressivement les mises à jour une à une jusqu’à la version 13.0.4.
Tout semblait s’être bien passé jusqu’à ce que je tente de créer une expédition à partir d’une commande.
J’ai le message d’erreur suivant en rouge "Unknown column ‹ e.billed › in ‹ field list › "
et sur la partie supposé afficher le contenu de l’expédition ce détail :

Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic (Vous pouvez fixer l'option $dolibarr_main_prod sur '1' pour supprimer quelques notifications):
**Date:** 20210817190858
**Dolibarr:** 13.0.4 - https://www.dolibarr.org
**Niveau de fonctionnalités:** 0
**PHP:** 7.4.22
**Server:** Apache
**OS:** Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
**UserAgent:** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36

**Url sollicitée:** /expedition/card.php?id=406
**Referer:** https://monsite.fr/expedition/shipment.php?id=332
**Gestionnaire de menu:** eldy_menu.php

**Modules/Applications:** syslog, user, societe, blockedlog, commande, expedition, product, expensereport, propal, contrat, fournisseur, facture, salaries, accounting, banque, tax, service, stock, agenda, reception, loan, margin, productbatch, bom, mrp, projet, ecm, categorie, import, export, debugbar, incoterm
**Type gestionnaire de base de données:** mysqli
**Requête dernier accès en base en erreur:** SELECT rowid, fk_source, sourcetype, fk_target, targettype FROM f5r9_element_element WHERE (fk_source = AND sourcetype = 'shipping') OR (fk_target = AND targettype = 'shipping') ORDER BY sourcetype
**Code retour dernier accès en base en erreur:** DB_ERROR_SYNTAX
**Information sur le dernier accès en base en erreur:** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND sourcetype = 'shipping') OR (fk_target = AND targettype = 'shipping') ORDER' at line 1

J’ai activé la barre de débug pour en savoir un peu plus et voilà ce que j’apprends de plus (sans m’aider pour autant) :
SELECT e.rowid, e.entity, e.ref, e.fk_soc as socid, e.date_creation, e.ref_customer, e.ref_ext, e.ref_int, e.fk_user_author, e.fk_statut, e.fk_projet as fk_project, e.billed, e.date_valid, e.weight, e.weight_units, e.size, e.size_units, e.width, e.height, e.date_expedition as date_expedition, e.model_pdf, e.fk_address, e.date_delivery, e.fk_shipping_method, e.tracking_number, e.note_private, e.note_public, e.fk_incoterms, e.location_incoterms, i.libelle as label_incoterms, s.libelle as shipping_method, el.fk_source as origin_id, el.sourcetype as origin FROM f5r9_expedition as e LEFT JOIN f5r9_element_element as el ON el.fk_target = e.rowid AND el.targettype = 'shipping' LEFT JOIN f5r9_c_incoterms as i ON e.fk_incoterms = i.rowid LEFT JOIN f5r9_c_shipment_mode as s ON e.fk_shipping_method = s.rowid WHERE e.entity IN (1) AND e.rowid=406` [DB_ERROR_NOSUCHFIELD] Unknown column 'e.billed' in 'field list'

J’ai recherché en long et en large sur le forum (y compris en anglais) et trouvé des situations tout à fait similaires, notamment une qui affiche le même problème et qui a été résolue en recréant la colonne « billed » dans la table. Problème, dans mon cas, elle existe déjà. Dans les autres cas, c’est souvent une mise à jour qui est recommandée, or, je suis déjà en 13.0.4 et j’ai évité la 14.0.0 en respectant bien le « dernière version stable » pour éviter les risques.

On se prend la tête avec mon beau frère sur cette erreur depuis un moment sans être experts, et j’avoue qu’on finit par tourner en rond en se disant qu’on doit franchement louper un truc.

Je vous serais extrêmement reconnaissante si vous pouviez m’aider avant que j’y perde la raison.

Merci d’avoir pris le temps de me lire.

Julie

Bonsoir,

Tout d’abord, la première chose est de faire une sauvegarde de votre base avant de faire des manipulations supplémentaires.

Ensuite, essayez via votre gestionnaire de base de données de rajouter le champ manquant à nouveau :

ALTER TABLE f5r9_expedition ADD COLUMN billed smallint DEFAULT 0;

et vu l’erreur, il faudrait peut être lancer une opération de réparation des liens orphelins en lançant le lien suivant et en remplaçant votre adresse par celle de votre site bien sûr :

https://monsite.fr/install/repair.php?clean_linked_elements=test

S’il trouve des éléments, on relance le même lien avec la confirmation de réparation :

https://monsite.fr/install/repair.php?clean_linked_elements=confirmed

Dans l’attente de votre retour,
Excellente soirée,

Je vous remercie pour votre retour si rapide !

J’ai déjà lancé une opération de réparation des liens orphelins sans qu’aucun élément ne soit trouvé.

J’avais préalablement sauvegardé la base avant de faire des manipulations supplémentaires pour avoir toujours un parachute en cas de problème. Cependant j’ai souvent des soucis avec les imports dans phpmyadmin. Notamment quand j’ai voulu recréer un environnement test, j’avais souvent les tables accounting account et accounting system qui ne passaient pas. Du coup j’appréhende toujours un peu ces manip :confused:

Je vais essayer de recréer le champ billed manuellement dès mon retour demain. Vu qu’il était existant il est vrai que nous n’avons pas eu l’idée d’essayer de le recréer.

Je reviendrais vous tenir informé.

Merci encore pour votre temps.

Bonne soirée

Julie

Rebonjour,

J’ai bien supprimé le champ billed pour le recréer (après une nouvelle sauvegarde complète de tout mon bazar évidemment au cas où). Et, pour une raison qui m’échappe, cela a fonctionné !!

Vraiment merci du fond du coeur d’avoir pris le temps de me répondre. Je n’aurais pas osé recréer la colonne sinon de peur de perdre des données.

Je passe en résolu, cela en aidera probablement d’autres.

Merci encore pour ce bel outil et pour votre aide :slightly_smiling_face:

Bonne soirée

Julie