Configurar MariaDB
MariaDB es una bifurcación de MySQL desarrollada por la comunidad, creada por preocupaciones sobre la adquisición de MySQL por parte de Oracle y liderada por los desarrolladores originales de MySQL. Sigue siendo libre bajo la GNU GPL.
MariaDB soporta secuencias de base de datos desde la v10.3, pero actualmente recomendamos usar la v10.6 o posterior. Consulte MariaDB Server Releases.
Preliminares
Sección titulada «Preliminares»Compruebe si su instalación de MariaDB tiene habilitado el motor InnoDB:
$ mariadb -h localhost -u root -p> show engines;Si se está usando otro motor por defecto, debe cambiar el motor por defecto a InnoDB, ya que es el único motor soportado por el dialecto actual com.openkm.db.dialect.MariaDBDialect.
Cambiar el motor por defecto
Sección titulada «Cambiar el motor por defecto»Modifique el fichero de configuración de MariaDB llamado my.cnf
Luego, bajo [mysqld], añada
default-storage-engine = innodb
Cambiar el juego de caracteres por defecto
Sección titulada «Cambiar el juego de caracteres por defecto»En Ubuntu 16.04, el juego de caracteres configurado por defecto en MariaDB es utf8mb4, pero recomendamos cambiar a utf8. Para obtener el juego de caracteres recomendado, debe modificar estos ficheros:
/etc/mysql/mariadb.conf.d/50-server.cnf
character-set-server = utf8collation-server = utf8_general_ci/etc/mysql/mariadb.conf.d/50-client.cnf
default-character-set = utf8/etc/mysql/mariadb.conf.d/50-MySQL-clients.cnf
default-character-set = utf8Una vez modificado, debe reiniciar el servidor de base de datos.
Creación de la base de datos
Sección titulada «Creación de la base de datos»Crear una base de datos y un usuario
Sección titulada «Crear una base de datos y un usuario»DROP DATABASE IF EXISTS okmdb;CREATE DATABASE okmdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;CREATE USER openkm@localhost IDENTIFIED BY '*secret*';GRANT ALL ON okmdb.* TO openkm@localhost WITH GRANT OPTION;Puede comprobar el motor de la base de datos con lo siguiente:
$ mariadb-show -h localhost -u root -p --status okmdb;Más información en MySQL: Case Sensitivity in String Searches
Crear una base de datos en persa
Sección titulada «Crear una base de datos en persa»Establezca la collation y el juego de caracteres persa en el fichero de configuración my.ini (requiere reiniciar el servicio):
collation_server = utf8mb4_persian_cicharacter_set_server = utf8mb4Establezca la collation y el juego de caracteres persa en la sesión actual de MariaDB (tras reiniciar el servicio, se usarán los valores por defecto de my.ini):
SET collation_server = 'utf8mb4_persian_ci';SET character_set_server = 'utf8mb4';Base de datos:
CREATE DATABASE okmdb CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;CREATE USER openkm@localhost IDENTIFIED BY 'k4M0j4lBi#ed';GRANT ALL ON okmdb.* TO openkm@localhost WITH GRANT OPTION;Configurar su openkm.properties
Sección titulada «Configurar su openkm.properties»Edite el fichero $TOMCAT_HOME/openkm.properties
spring.jpa.hibernate.ddl-auto=create-onlyspring.jpa.properties.hibernate.dialect=com.openkm.db.dialect.MariaDBDialectConfigurar los orígenes de datos de Tomcat
Sección titulada «Configurar los orígenes de datos de Tomcat»Edite el fichero $TOMCAT_HOME/openkm.properties y habilite el recurso llamado JDBC/OpenKMDS
spring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/okmdb?autoReconnect=true&useUnicode=true&characterEncoding=UTF8&nullNamePatternMatchesAll=true&serverTimezone=Europe/Madridspring.datasource.username=openkmspring.datasource.password=*secret*Configurar el login de la aplicación
Sección titulada «Configurar el login de la aplicación»Edite el fichero $TOMCAT_HOME/openkm.properties
authentication.openkm.database=trueEjecutar la aplicación
Sección titulada «Ejecutar la aplicación»Al arrancar OpenKM, la aplicación creará automáticamente una estructura de base de datos vacía.
Migrar de Windows a Linux
Sección titulada «Migrar de Windows a Linux»Cuando migre de Windows a Linux, debe convertir los nombres de tabla en minúsculas a mayúsculas. El siguiente script ayudará con ello:
select concat('rename table ', table_name, ' to ' , upper(table_name) , ';') from information_schema.tables where table_schema = 'okmdb';Nombres de nodo insensibles a mayúsculas/minúsculas
Sección titulada «Nombres de nodo insensibles a mayúsculas/minúsculas»Por defecto, la base de datos distingue mayúsculas/minúsculas. Sin embargo, ejecutando:
ALTER TABLE OKM_NODE_BASE MODIFY NBS_NAME varchar(256) COLLATE utf8mb3_general_ci;se modifica la columna NBS_NAME para que los nombres de nodo se traten sin distinguir mayúsculas/minúsculas. Esta collation también ignora las diferencias de acentuación, por lo que nombres con y sin acentos se consideran equivalentes.
Como consecuencia, no será posible tener dos documentos como “Más temas.txt” y “mas temas.txt”, ya que para el índice de la tabla se interpretan como la misma cadena y la restricción de unicidad fallará.
Si esto ocurre, el sistema puede lanzar un error como:
ERROR 1062 (23000): Duplicate entry '483ab139-9c20-44a9-8534-ed124a8f37ba-NULL' for key 'IDX_NODE_BASE_PARNAM'Esto significa que ambos valores se consideran idénticos y el índice único los detecta como duplicados.
Para identificar los nodos problemáticos, puede ejecutar la siguiente consulta:
SELECT NBS_PARENT, NBS_NAME, COUNT(*) FROM OKM_NODE_BASEGROUP BY NBS_PARENT, LOWER(NBS_NAME) HAVING COUNT(*) > 1;Los duplicados que se encuentren deben renombrarse para que dejen de considerarse iguales.
Solución de problemas
Sección titulada «Solución de problemas»Error “ASCII ‘\\0’ appeared in the statement” al importar un volcado de base de datos.
Sección titulada «Error “ASCII ‘\\0’ appeared in the statement” al importar un volcado de base de datos.»Es posible que el error se deba a la codificación del fichero SQL. Debería comprobar el formato del fichero. Por ejemplo, con el comando:
> file okmdb.sqlokmdb.sql: Little-endian UTF-16 Unicode text, with very long lines, with CRLF line terminatorsSi el fichero está en formato UTF-16, conviértalo a UTF-8. Por ejemplo, use el comando:
> iconv -f utf-16 -t utf-8 okmdb.sql > okmdb-good.sql