:::: MENU ::::

Debian : Mettre à jour MariaDB 10.1 (key was too long fixed)

Spread the love

Salut;

Si vous utilisez Laravel > 5.5 vous avez surement vu cette erreur :

1071 Specified key was too long; max key length is 767 bytes

Ce bug a été corrigé à partir de la version 10.2 de MariaDB (en ajoutant le support de utf8mb4  pour l’enregistrement des emojis).

Par défaut Dans Debian 9 Stretch, c’est MariaDB 10.1 qui est installée et donc à chaque fois que vous essayer d’utiliser le type de caractères utf8mb4 dans votre application web vous aurez une erreur.

Il existe des techniques pour y remédier à cela mais il faut le faire à chaque nouveau projet, le mieux je pense c’est de faire la mise à jour pour bénéficier de cette fonctionnalité et éventuellement d’autres correctifs

Je vais vous expliquer rapidement comment effectuer la mise à jour de la version 10.1 à la version 10.3

Tout d’abord il faut arrêter MariaDB Server

mysql -u root -p
SHUTDOWN;
exit

Puis effectuer une sauvegarde de vos données

rsync -aP /var/lib/mysql /var/backup/mariadb/backup/
rsync -aP /etc/mysql /var/backup/mariadb/backup/mysql-config

Désinstallez la version 10.1

apt-get remove mariadb-server

En suite, il faut ajouter la clé et créer un fichier mariadb.list

apt-get install software-properties-common dirmngr
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
nano /etc/apt/sources.list.d/mariadb.list

Insérez ce texte dans : /etc/apt/sources.list.d/mariadb.list

# MariaDB 10.3 repository list - created 2018-09-14 11:31 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386,ppc64el] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.3/debian stretch main
deb-src http://mariadb.mirrors.ovh.net/MariaDB/repo/10.3/debian stretch main

Faites un update puis installer MariaDB-Server :

apt-get update
apt-get install mariadb-server

Lancer la mise à jour de la base de données

mysql_upgrade -u root -p

Si tout est ok, relancez votre serveur MariaDB

service mysql restart

Voilà !


So, what do you think ?