erreur Illegal mix of collations ventil. comptable

bonjour
Suite à une migration de dolibarr v7.00 e 9.00
j’ai en ventilation comptable des lignes de factures client / fournisseur la meme erreur

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

en faisant un dump de la struture de la base j’ai trouve et corrige trois champs utf8_unicode_ci que j’ai corrigé par

    ALTER TABLE `llx_accounting_journal` CHANGE `code` `code` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
    ALTER TABLE `llx_accounting_bookkeeping` CHANGE `numero_compte` `numero_compte` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
    ALTER TABLE `llx_bank_account` CHANGE `accountancy_journal` `accountancy_journal` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

tous les autes champs sont en utf8_general_ci
mais l’erreur persiste …

j’ai regarde sur


www.dolibarr.fr/forum/t/besoin-daide-pour-gros-nettoyage-de-printemps/25218/1

une idée ???

merci

Resolu par le message de ksar
Entrer l’url suivant : votre_nom_de_domaine.fr/install/repair.php?force_utf8_on_tables=confirmed

1 « J'aime »

www.dolibarr.fr/forum/t/illegal-mix-of-collations-utf8-unicode-ci-implici/26923/3

1 « J'aime »

merci ksar
je teste :happy:

cela fonctionne en effet plutôt bien !!!

encore merci

SUite à un migration de v7 en v9.01 j’ai a nouveau eu le probleme

la reparation par le script d’install de dolibarr n’est pas suffisante à régler le problème

il est nécessaire de se connecter en phmyadmin et lancer la requete

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`,
 '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as stmt
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = '****remplacer-par-le-nom-de-ma-table****'
ORDER BY 1

remplacer le nom de la table

il est nécessaire de cocher
afficher les « résultat complets / toutes les lignes »
et
« Textes Complet » pour avoir les 288 requêtes a lancer

1 « J'aime »

Bonjour à tous. j’ai le même probleme que vous dans la liaison des factures après une migration 8.0.3 vers 9.0.1. la solution de Ksar ne semble plus fonctionner. comment savoir les tables à convertir dans la solution de Elarifr? Merci pour votre aide

Bonjour,

Dans le message d’erreur!

j’ai juste ça dans le msg d’erreur: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation ‹ = ›

Merci de mettre le message d’erreur COMPLET

j’ai juste ça sur la fenetre de liaison facture, voir fichier joint

Pièces jointes :

C’est pas normal.

C’est sur quelle page ?
Vous pouvez activer les logs Dolibarr ?

@dam90
il te faut faire les deux operations

1/ te connecter sur phpmyadmin et lancer la requete dur post
www.dolibarr.fr/forum/t/erreur-illegal-mix-of-collations-ventil-comptable/29270/4
en reponse tu auras les requetes a lancer pour modifier toutes tes tables
pour ma part environ 260 requetes au total

2/ lance les requetes par batch de 50/100 lignes et tu devrais avoir le nombre de modification en retour

3/ une fois les champs migre enleve / renomme le fichier install.lock et lance la reparation
mondomaine/dossier-dolibarr/install/repair.php?force_utf8_on_tables=confirmed
replace le fichier install.lock

comment activer les logs et les afficher? merci

Bonjour Elarifr, je reviens vers toi pour la commande à passer dans phpmyadmin.
j’ai lancé cette commande:

SELECT CONCAT(‹ ALTER TABLE ', t.TABLE_SCHEMA, '.', t.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ›) as stmt
FROM information_schema.TABLES t
WHERE 1

ça me donne une liste de résultats, environ 464 résultats.

ALTER TABLE information_schema.CHARACTER_SETS
ALTER TABLE information_schema.CLIENT_STATISTIC... ALTER TABLE information_schema.COLLATIONSCONV... ALTER TABLEinformation_schema.COLLATION_CHARAC…

Que faire après avoir eu ces résultats?
Merci à toi d’avance.

Bonjour @dam90 désolé mais pas accès à mon pc pour te répondre plut tot

as tu bien lance la commande sql complète en remplaçant *remplacer-par-le-nom-de-ma-table* par le nom de TA bdd
attention remplace egalement les **** mais laisse bien les ’
attention a bien copier la commande sur une seule ligne ! jusqu’à la fin qui se termine par BY 1

SELECT CONCAT(‹ ALTER TABLE ', t.TABLE_SCHEMA, '.', t.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ›) as stmt
FROM information_schema.TABLES t
WHERE 1
AND t.TABLE_SCHEMA = ‹ remplacer-par-le-nom-de-ma-table ›
ORDER BY 1

tu as une option à cocher pour avoir le résultat complet et non pas tronqué avec des … à la fin de la ligne
quand tu as le resultat des xxx lignes ALTER TABLE ( apriori pour toi 464 lignes) tu les saisis dans phpmyadmin par lot de 50/100 lignes à la fois. il me semble qu’il y a un separateur toutes les 100 requetes

@+

Bonjour elarifr, merci de ton aide.

j’ai mis dans console phpmyadmin:

SELECT CONCAT(‹ ALTER TABLE ', t.TABLE_SCHEMA, '.', t.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ›) as stmt
FROM information_schema.TABLES t
WHERE 1
AND t.TABLE_SCHEMA = ‹ db-dolibarr ›
ORDER BY 1

et cela me donne les résultats suivants: 288 lignes au total.

ALTER TABLE db-dolibarr.llx_accounting_account CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_accounting_bookkeeping_tmp CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_accounting_bookkeeping CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_accounting_fiscalyear CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_accounting_journal CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_accounting_system CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_actioncomm_cdav CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_actioncomm_extrafields CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_actioncomm_reminder CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_actioncomm_resources CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_actioncomm CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_adherent_extrafields CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_adherent_type_extrafields CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE db-dolibarr.llx_adherent_type CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Après je fais quoi. je fais un copier coller de ces lignes dans le console phpmyadmin? et j’exécute?

@dam90
exactement tu colles et executes les lignes de ALTER par lot de 50 / 100 lignes

Un grand merci à toi cela à fonctionner. :wink: