[MySQL/MariaDB] « Index column size too large. The maximum column size is 767 bytes. »

Dans le cadre du développement d’une application web avec Symfony, je me suis récemment retrouvé face a un petit caprice de ma base de données. Voyons tout de suite de quoi il en retourne.

Lost places

Après avoir récupéré les modifications réalisées par un collègue, j’ai souhaité recréer la base de données associée à l’application afin de repartir de zéro.

Au moment de la création des tables du schéma, la console me renvoie une tartine d’erreurs dont une attire particulièrement mon attention.

Index column size too large. The maximum column size is 767 bytes.

Après quelques recherches j’en tire les informations suivantes :

  • 767 octets est la limite de préfixe déclaré pour les tables InnoDB dans les versions antérieures à la 5.7 de MySQL et dans les versions antérieurs à la 10.2 de MariaDB.
  • A partir de la version 5.7 de MySQL et la 10.2 de MariaDB, cette limite a été augmentée à 3072 octets.
  • L’encodage (latin1, UTF8, UTF8mb4, etc.) peut jouer sur cette taille. Puisqu’en UTF8 un caractère prend 3 octets, il faut diviser la taille disponible par 3 pour trouver la longueur maximale de préfixe d’index. Et par 4 si on utilise UTF8mb4.

Voyons voir…
La semaine passée, un collègue a remplacé l’encodage de la base de données de UTF8 vers UTF8mb4.
Hum. Quelle est ma version de base de donnée ?

mariadb  Ver 15.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Oh oh !

Je suis sous Debian Stretch, et j’ai déjà la dernière version proposée par défaut.

Allons donc directement récupérer la dernière version stable auprès du site de MariaDB pour essayer de palier cela !

Et là, c’est tout simple, il suffit de suivre les instructions sur : https://downloads.mariadb.org/mariadb/repositories/#mirror=ovh&distro=Debian&distro_release=stretch–stretch&version=10.3

Et donc oui, après essai, monter la version de MariaDB à la version 10.3 permet de ne plus être confronté à ce problème. 🙂


Sources :

2 réponses sur “[MySQL/MariaDB] « Index column size too large. The maximum column size is 767 bytes. »”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.