Vues :

Comportement :
Lors de la mise à niveau ou de l'utilisation d'un système DocuWare avec une base de données MySQL, vous pouvez rencontrer des erreurs telles que celles listées ci-dessous :

DocuWare.Common.Exceptions.DWDBException :
Mélange illégal de collations (utf8_general_ci,IMPLICIT) et (utf8_unicode_ci,IMPLICIT) pour l'opération '='


Lacolonne de référence 'organizationId' et la colonne de référence 'guid' dans la contrainte de clé étrangère 'dwfk_XXXXXXXXXXXXXXXXXXX' sont incompatibles.

L'erreur se produit parce que les tables de la base de données ont des collations différentes
.

Solution :
Pour résoudre ce problème, vous devez convertir toutes les tables et bases de données à la collation supportée.
Cette opération peut être effectuée manuellement ou à l'aide des scripts MySQL suivants.

*** Avant d'effectuer des modifications, assurez-vous de disposer d'une sauvegarde de toutes les bases de données DocuWare.
***

Étape 1 : Modification de la collation de toutes les tables et bases de données

Vous pouvez vérifier la version de MySQL actuellement installée en exécutant
SHOW VARIABLES LIKE "%version%" ;

Connectez-vous au serveur MySQL via MySQL Workbench ou un outil similaire et connectez-vous en tant qu'utilisateur privilégié.
Ouvrez une nouvelle fenêtre de requête et exécutez le script correspondant à votre version de MySQL
:

MySQL 5.X (Base de données interne V1/V2) ConvertCollationMySQL5
MySQL 8.0.X (Base de données interne V3) ConversionCollationMySQL80
MySQL 8.4.X (Base de données interne V4) ConversionCollationMySQL84

Assurez-vous d'avoir sélectionné la base de données dwsystem comme schéma par défaut.
Le script contient deux sections. La première section est utilisée pour créer une procédure qui peut modifier la collation de toutes les tables d'une base de données donnée.
Copiez la première section dans la fenêtre de requête et exécutez-la. Vérifiez ensuite que la procédure stockée existe dans la base de données DocuWare.

La deuxième section, comme indiqué ci-dessous, doit être exécutée une fois par base de données DocuWare. Pour ce faire, remplacez le nom de la base de données aux endroits surlignés et exécutez les quatre instructions dans l'ordre pour chaque base de données.
Utilisez toujours la section incluse dans le fichier script ci-dessus, car les instructions ci-dessous sont uniquement destinées à la démonstration.
SET @@FOREIGN_KEY_CHECKS = 0 ;
ALTER DATABASE
dwsystem CHARACTER SET = utf8 COLLATE = 'utf8_general_ci' ;
call UpdateCharsetAndCollation('
dwsystem') ;
SET @@@FOREIGN_KEY_CHECKS=1 ;


Étape 2 : Modifier le fichier my.ini
*** Sauvegardez le fichier my.ini avant de continuer.***

Une fois que le script a été exécuté pour toutes les bases de données, vous devez modifier le fichier my.ini de la base de données.
(Emplacement par défaut : C:\Program Files (x86)\DocuWare\Internal Database VX ou C:\Program Files\DocuWare\Internal Database VX).

Recherchez 'character-set-server' dans la section [mysqld] et remplacez-le par la collation correcte pour votre version de MySQL:

MySQL 5.X (Base de données interne V1/V2) utf8
MySQL 8.0.X (Base de données interne V3) utf8
MySQL 8.4.X (Base de données interne V4) utf8mb4


Recherchez 'collation-server' dans la section [mysqld] et remplacez-la par la collation correcte pour votre version de MySQL:

MySQL 5.X (Base de données interne V1/V2) utf8_general_ci
MySQL 8.0.X (Base de données interne V3) utf8mb3_unicode_ci
MySQL 8.4.X (Base de données interne V4) utf8mb4_0900_ai_ci



Enregistrez le fichier my.ini, puis redémarrez le serveur MySQL.
Si l'erreur s'est produite lors d'une mise à jour, vous pouvez retourner à la configuration et cliquer sur Réessayer.

Le KBA s'applique UNIQUEMENT aux Organisations sur site.

Veuillez noter : Cet article est une traduction de l'anglais. Les informations contenues dans cet article sont basées sur la ou les versions originales des produits en langue anglaise. Il peut y avoir des erreurs mineures, notamment dans la grammaire utilisée dans la version traduite de nos articles. Bien que nous ne puissions pas garantir l'exactitude complète de la traduction, dans la plupart des cas, vous la trouverez suffisamment informative. En cas de doute, veuillez revenir à la version anglaise de cet article.