L’erreur MySQL 1071 « Specified key was too long » apparaît quand un index dépasse la longueur maximale autorisée par le moteur de stockage. Sur PrestaShop, la solution la plus sûre consiste à utiliser le moteur InnoDB. Sur un hébergement mutualisé ancien, il faut souvent changer d’offre ou d’hébergeur, car l’ancien moteur MyISAM ne suffit pas.
Ce que dit l’erreur
Le message signifie qu’un index est trop long pour le moteur utilisé par la table. La limite historique de MyISAM est de 1000 octets par index. Une colonne longue en utf8mb4 peut la dépasser, car chaque caractère peut occuper quatre octets.
Diagnostic en quatre étapes
1. Relevez le moteur de chaque table. Dans un outil d’administration MySQL, exécutez :
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'nom_de_votre_base';
Remplacez nom_de_votre_base par le nom de votre base. Si des tables utilisent encore MyISAM, c’est probablement la cause.
2. Relevez le mode SQL. Le mode strict peut aussi provoquer des refus :
SELECT @@GLOBAL.sql_mode, @@SESSION.sql_mode;
3. Vérifiez la version du serveur. Une version ancienne de MySQL ou MariaDB limite les index plus strictement. Votre hébergeur peut confirmer la version utilisée. Pour la configuration recommandée, voyez notre article sur les configurations de serveur pour PrestaShop.
4. Demandez à l’hébergeur le moteur par défaut. Posez trois questions : quel moteur est utilisé par défaut, si InnoDB est disponible, et si une version plus récente de MySQL ou MariaDB est proposée.
Solution recommandée : passer en InnoDB
Passez les tables concernées en InnoDB. Exemple pour une table, à adapter :
ALTER TABLE ps_nom_de_table ENGINE=InnoDB;
Faites cette opération sur une copie de la base, puis sur la base réelle après une sauvegarde complète. Ne modifiez pas les index du schéma PrestaShop vous-même : demandez l’aide de votre hébergeur ou d’un développeur.
Autres pistes
- Raccourcir un index. Indexer seulement le début d’une colonne longue peut suffire. En
utf8mb4, une limite de 191 caractères donne 764 octets, sous la limite de 767 octets des anciennes versions. Cette modification touche le schéma : elle doit être faite par un technicien. - Changer le mode SQL. Un témoignage indique qu’on peut désactiver le mode strict pour finir une installation. C’est une solution de contournement : elle réduit les contrôles de MySQL et doit rester temporaire.
- Changer d’hébergement. Si l’hébergement est gratuit ou n’autorise pas InnoDB, aucune des pistes ci-dessus ne règle durablement le problème.
Quand cette erreur apparaît
- À l’installation de PrestaShop sur un hébergement gratuit ou ancien.
- Lors d’une mise à jour, quand une table est recréée avec un moteur ancien.
- Après une migration vers un serveur qui utilise un moteur différent.
Questions fréquentes
Faut-il désactiver le mode strict pour installer PrestaShop ?
Ce n’est pas recommandé. Mieux vaut régler le moteur ou la longueur de l’index. Le mode strict ne doit être désactivé que comme solution temporaire, avec une sauvegarde.
InnoDB est-il déjà utilisé par défaut ?
Sur la plupart des hébergements payants récents, oui. Vérifiez-le avec la requête de diagnostic ci-dessus.
Dois-je changer d’hébergeur ?
Si l’hébergement n’autorise pas InnoDB, ou n’offre pas une version suffisante de MySQL ou MariaDB, oui. Demandez d’abord au support quel moteur est utilisé par défaut.
Sources
- Retour d’expérience d’un hébergeur gratuit sur PrestaShop et MyISAM : forum.infinityfree.com
- Explication générale de l’erreur 1071 : oneuptime.com
- Ces solutions sont des pistes de la communauté, non une documentation officielle PrestaShop : validez-les avec votre hébergeur.