2 nov. 2023

Problème encodage dolibarr

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation  =

Problème connu sur Dolibarr, faites impérativement une sauvegarde de la base de données avant puis

  1. Renommer votre install.lock en 1install.lock
  2. Entrer l’url suivant : votre_nom_de_domaine.fr/install/repair.php?force_utf8_on_tables=confirmed
  3. Attendre la fin de la procédure et cela devrait rentrer dans l’ordre.
  4. Renommer votre 1install.lock en install.lock.

Comptabilité avancée - Comptes produits

Dans la compta avancée, la liaison factures client peut déclencher le message cité ci-dessus (constaté avec la version 17.03 de Dolibarr).

La solution citée précédemment n’a pas fonctionné dans mon cas car deux tables refusent la mise à jour de leur collation. Il s’agit des tables accounting_account et accounting_system. À l’origine, ces tables étaient en utf8mb3_general_ci.

Le champ concerné est pcg_version qui est lié à fk_pcg_version. Comme il y a une contrainte de clé, il est impossible de mettre à jour les tables.

Une solution radicale proposée sur le forum est de supprimer la vérification de cette contrainte (solution radicale qui peut avoir des inconvénients) :

ALTER TABLE llx_accounting_account NOCHECK CONSTRAINT ALL;

Pour ma part, j’ai trouvé la solution suivante :

  • exporter les deux tables accounting_account et accounting_system
  • supprimer les deux tables de la base en désactivant le contrôle des clés étrangères.
  • dans l’export d’accounting_system, remplacer DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci par DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC
  • ré-importer la table dans la base
  • faire la même manœuvre avec la table accounting_account

Retrouvez quelques éléments dans le forum Dolibarr :
https://www.dolibarr.fr/forum/t/comptabilite-avance-compte-produits/29821/4
https://www.dolibarr.fr/forum/t/illegal-mix-of-collations-utf8-unicode-ci-implici/26923


Catégorie de publication : Documentation
Thématique : Dolibarr