Mise à jour vers version mineure

Bonjour,

OS : Debian 12
PHP : 8.2
DB : postgresql 15.10

Lors de la mise à jour depuis la 20.0.3 vers 20.0.4, j’ai des erreurs qui remontent via sylog, relatives à des échecs de requête (du type table existe déjà), est-ce normal ?
Aucune erreur ne s’affiche sur les pages web.

Cliquer sur Démarrer m’amène à l’URL : install/upgrade.php?action=upgrade&selectlang=fr_FR&versionfrom=19.0.0&versionto=20.0.0#

Connexion au serveur : /run/postgresql OK
Connexion à la base : dolibarr OK
Version du serveur de base de données 15.10 (Debian 15.10-0+deb12u1)
Merci de patienter quelques instants…
Choix du script de migration 19.0.0-20.0.0.sql

Erreurs syslog :


ERROR:  column "block_if_negative" of relation "llx_c_holiday_types" already exists
STATEMENT:  ALTER TABLE llx_c_holiday_types ADD COLUMN block_if_negative integer NOT NULL DEFAULT 0;
ERROR:  column "sortorder" of relation "llx_c_holiday_types" already exists
STATEMENT:  ALTER TABLE llx_c_holiday_types ADD COLUMN sortorder smallint;
ERROR:  column "phone" of relation "llx_resource" already exists
STATEMENT:  ALTER TABLE llx_resource ADD COLUMN phone varchar(255) DEFAULT NULL;
...
ERROR:  relation "llx_asset_model" does not exist
STATEMENT:  ALTER TABLE llx_asset_model ADD COLUMN ref_ext varchar(255);

Puis étape suivante, URL : install/upgrade2.php?versionfrom=19.0.0&versionto=20.0.0#

Migration de la base (données)
Mise à jour: Rechargement du module Comptabilité (partie double)
Mise à jour: Rechargement du module Événements/Agenda
Mise à jour: Rechargement du module Banques et caisses
Mise à jour: Rechargement du module Factures et avoirs
Mise à jour: Rechargement du module Fournisseurs
Mise à jour: Rechargement du module Emprunts
Mise à jour: Rechargement du module Marges
Mise à jour: Rechargement du module Salaires
Mise à jour: Rechargement du module Services
Mise à jour: Rechargement du module Tiers
Mise à jour: Rechargement du module Utilisateurs & Groupes
Migration terminée

Erreurs syslog :

ERROR:  column "birth" of relation "llx_user" already exists
STATEMENT:  ALTER TABLE llx_user ADD COLUMN birth date
ERROR:  column "dateemployment" of relation "llx_user" already exists
STATEMENT:  ALTER TABLE llx_user ADD COLUMN dateemployment date
...
ERROR:  duplicate key value violates unique constraint "uk_const"
DETAIL:  Key (name, entity)=(MAIN_MODULE_MARGIN_TABS_0, 1) already exists.
STATEMENT:  INSERT INTO llx_const (name, type, value, note, visible, entity) VALUES ('MAIN_MODULE_MARGIN_TABS_0', 'chaine', 'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__', null, '0', 1)
ERROR:  current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  INSERT INTO llx_const (name, type, value, note, visible, entity) VALUES ('MAIN_MODULE_MARGIN_TABS_1', 'chaine', 'thirdparty:+margin:Margins:margins:empty($user->socid) && $user->rights->margins->liretous && ($object->client > 0):/margin/tabs/thirdpartyMargins.php?socid=__ID__', null, '0', 1)
ERROR:  current transaction is aborted, commands ignored until end of transaction block
STATEMENT:  SELECT count(*) as nb FROM llx_const WHERE name = 'MARGIN_TYPE' AND entity = 1
...

Etape suivante, URL install/step5.php?versionfrom=19.0.0&versionto=20.0.0

Dolibarr a été mis à jour avec succès.

J’ai fait un dump de la structure de la base (pg_dump --schema-only) avant et après la mise à jour, voici le diff :

diff struct-20.0.3.sql struct-20.0.4.sql 
19367a19368,19374
> -- Name: uk_facture_fourn_det_rec_extrafields; Type: INDEX; Schema: public; Owner: dolibarr
> --
> 
> CREATE UNIQUE INDEX uk_facture_fourn_det_rec_extrafields ON public.llx_facture_fourn_det_rec_extrafields USING btree (fk_object);
> 
> 
> --

Pourtant le fichier htdocs/install/mysql/migration/19.0.0-20.0.0.sql n’a pas changé (hormis quelques espaces dans les commentaires) entre la 20.0.3 et la 20.0.4.

Oui, les erreurs dans les logs lors d’une migration sont normales. L’outil de migration écarte celle qui sont du à des actions déjà faite pour n’afficher à l’écran que celle qui posent probleme. Si aucune erreur n’est remonté à l’écran tout va bien.