Comportamiento:
Al actualizar o utilizar un sistema DocuWare con una base de datos MySQL, pueden producirse errores como los que se indican a continuación:
DocuWare.Common.Exceptions.DWDBException:Mezcla ilegal de intercalaciones (utf8_general_ci,IMPLICIT) y (utf8_unicode_ci,IMPLICIT) para la operación '='.
La columna de referencia 'organizationId' y la columna de referencia 'guid' en la restricción de clave externa 'dwfk_XXXXXXXXXXXXXXXXXXXXXXX' son incompatibles.
El error se produce porque las tablas de la base de datos tienen colaciones diferentes.
Solución:
Para resolver el problema, deberá convertir todas las tablas y bases de datos a la intercalación correcta admitida.
Esto se puede hacer manualmente o mediante los siguientes scripts de MySQL.
*** Antes de realizar cualquier cambio, asegúrese de tener una copia de seguridad de todas las bases de datos de DocuWare. ***
Paso 1: Cambiar la intercalación de todas las tablas y bases de datos
Puede comprobar la versión actual de MySQL ejecutando
SHOW VARIABLES LIKE "%version%";
Conéctese al servidor MySQL mediante MySQL Workbench o una herramienta similar e inicie sesión como usuario con privilegios.
Abra una nueva ventana de consulta y ejecute el script correspondiente a su versión de MySQL:
| MySQL 5.X (Base de datos interna V1/V2) | ConvertirColaciónMySQL5 |
| MySQL 8.0.X (Base de datos interna V3) | ConvertCollationMySQL80 |
| MySQL 8.4.X (Base de datos interna V4) | ConvertirColaciónMySQL84 |
Asegúrese de haber seleccionado la base de datos dwsystem como esquema por defecto.
El script contiene dos secciones. La primera sección se utiliza para crear un procedimiento que puede cambiar la intercalación de todas las tablas de una base de datos determinada.
Copie la primera sección en la ventana de consulta y ejecútela. A continuación, compruebe que el procedimiento almacenado existe en la base de datos dwsystem.
La segunda sección, como se ve a continuación, debe ejecutarse una vez por cada base de datos DocuWare. Para ello, sustituya el nombre de la base de datos en los lugares resaltados y ejecute las cuatro sentencias en orden para cada base de datos.
Utilice siempre la sección incluida en el archivo de secuencia de comandos anterior, ya que las sentencias que se muestran a continuación sólo tienen fines de demostración.
SET @@FOREIGN_KEY_CHECKS= 0;
ALTER DATABASE dwsystem CHARACTER SET = utf8 COLLATE = 'utf8_general_ci';
call UpdateCharsetAndCollation(' dwsystem');
SET @@FOREIGN_KEY_CHECKS=1;
Paso 2: Modificar el archivo my.ini
*** Haga una copia de seguridad del archivo my.ini antes de continuar.***
Una vez ejecutado el script para todas las bases de datos, es necesario modificar el archivo my.ini de la base de datos.
(Ubicación por defecto: C:\Program Files (x86)\DocuWare\Internal Database VX o C:\Program Files\DocuWare\Internal Database VX).
Busque 'character-set-server' en la sección [mysqld] y sustitúyalo por la intercalación correcta para su versión de MySQL:
| MySQL 5.X (Base de datos interna V1/V2) | utf8 |
| MySQL 8.0.X (Base de datos interna V3) | utf8 |
| MySQL 8.4.X (Base de datos interna V4) | utf8mb4 |
Busque 'collation-server' en la sección [mysqld] y sustitúyalo por la colación correcta para su versión de MySQL:
| MySQL 5.X (Base de datos interna V1/V2) | utf8_general_ci |
| MySQL 8.0.X (Base de datos interna V3) | utf8mb3_unicode_ci |
| MySQL 8.4.X (Base de datos interna V4) | utf8mb4_0900_ai_ci |

Guarde el archivo my.ini y, a continuación, reinicie el servidor MySQL.
Si el error se produjo durante una actualización, ahora puede volver a la Configuración y hacer clic en Reintentar.
KBA es aplicable SÓLO a Organizaciones In situ.
Tenga en cuenta: Este artículo es una traducción del idioma inglés. La información contenida en este artículo se basa en la(s) versión(es) original(es) del producto(s) en inglés. Puede haber errores menores, como en la gramática utilizada en la versión traducida de nuestros artículos. Si bien no podemos garantizar la exactitud completa de la traducción, en la mayoría de los casos, encontrará que es lo suficientemente informativa. En caso de duda, vuelva a la versión en inglés de este artículo.
