Configuration de mysql/mariadb¶
Note
- S’agissant d’une instance de développement utilisant docker-compose,
l’enchainement de commandes suivantes devrait faire l’affaire et remplacer le déroulé de la doc (attention, efface la BDD) :
make dev_db_clear make dbv_db_start endi-load-demo-data development.ini endi-migrate development.ini upgrade docker-compose -f db-docker-compose.yaml run --rm mariadb \ mysqlcheck -u root -proot -P 3306 -hmariadb --auto-repair --optimize --all-databases MYSQL_CMD="docker-compose -f db-docker-compose.yaml run --rm mariadb mysql -u root -proot -P 3306 -hmariadb" ./tools/migrate_encoding.sh
Afin de gérer correctement les différents types de caractères, nous utilisons le format utf8mb4.
Il faut pour cela configurer correctement le serveur mariadb correspondant :
Sous fedora/RHEL : dans un des fichiers /etc/my.cnf ou un fichier du répertoire /etc/my.cnf.d/
Sous Debian/Ubuntu : dans un des fichiers /etc/mysql/mariadb.cnf ou un fichier du répertoire /etc/mysql/mariadb.conf.d/
[mysql]
default-character-set=utf8mb4
[mysqld]
# Permet d'assurer que la connexion du client est forcée
character-set-client-handshake = FALSE
collation-server = utf8mb4_unicode_ci
init-connect = 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
character-set-server = utf8mb4
NB : le serveur mariadb (ou mysql) doit être relancé après modification
Si ces modifications ont été effectuées sur un serveur existant, il faut lancer la commande suivante (le -p si votre utilisateur root mysql a un mot de passe)
mysqlcheck -u root -p --auto-repair --optimize --all-databases
Configuration de enDI¶
Une fois la base de données configurée avec l’encodage utf8mb4 il faut indiquer à enDI de l’utiliser.
Pour cela il faut modifier les fichiers de config (.ini) de endi et endi_celery et modifier l’encodage passé en paramètre à la chaîne de connexion mysql :
sqlalchemy.url = mysql://endi:endi@127.0.0.1:13306/endi?charset=utf8mb4
Migration de base de données existantes¶
La commande suivante migre les tables et colonne de la base de données “endi” vers l’encodage utf8mb4. Elle peut être lancée plusieurs fois (le -p si votre utilisateur root mysql a un mot de passe).
MYSQL_CMD='mysql -u root -p' ./tools/migrate_encoding.sh