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 …
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
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
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
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
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?