Project

General

Profile

Anomalie #4342

Erreur 1071 de mysql: Specified key was too long; max key length is 1000 bytes

Added by RealET 🔸 5 months ago. Updated 5 months ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
05/26/2019
Due date:
% Done:

0%

Resolution:
invalid
Navigateur:

Description

Bonjour,

Après avoir configuré MariaDB pour être en UTF8MB4, je n'ai pas pu installer un plugin (comme il y a aussi un bug SVP, je vais faire un autre ticket spécifique).
Pour être précis, un table du plugin n'a pas été créée et sql.log contient :

2019-05-25 16:23:59 78.205.175.37 (pid 16091) :Pri:ERREUR: Erreur 1071 de mysql: Specified key was too long; max key length is 1000 bytes
in ecrire/base/create.php L73 [sql_create(),creer_ou_upgrader_table(),alterer_base(),maj_tables(),serie_alter(),maj_while(),maj_plugin(),referer_spam_upgrade(),spip_plugin_install(),plugins_installer_dist(),installer_plugin(),do_install(),do_action(),one_action(),action_actionner_dist(),traiter_appels_actions()]
CREATE  TABLE IF NOT EXISTS `mutu_pro2spipf126`.spip_referer_spam (
        date DATE NOT NULL,
        referer VARCHAR (255) ,
        PRIMARY KEY (referer)) ENGINE=MyISAM

La documentation sur ce sujet est abondante.
Ceci m'a semblé un bon résumé du problème : https://stackoverflow.com/questions/6172798/mysql-varchar255-utf8-is-too-long-for-key-but-max-length-is-1000-bytes
Et la solution générale consiste à faire un index de seulement 191 : https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-conversion.html :

In an InnoDB table that uses COMPACT or REDUNDANT row format, these column and index definitions are legal:
col1 VARCHAR(500) CHARACTER SET utf8, INDEX (col1(255))

To use utf8mb4 instead, the index must be smaller:
col1 VARCHAR(500) CHARACTER SET utf8mb4, INDEX (col1(191))

History

#1 Updated by RealET 🔸 5 months ago

Voir #4343 pour le bug spécifique SVP

#2 Updated by b b 5 months ago

  • Status changed from Nouveau to En cours

Comme indiqué plus bas dans le thread que tu pointes, ton problème vient du fait que tu utilises MyISAM et non InnoDB cf https://stackoverflow.com/a/50689604

J'hésite à répondre que c'est un bug de configuration de ton serveur SQL ou du plugin en question...

#3 Updated by RealET 🔸 5 months ago

Puisque tu parles de InoDB : Il n'est pas possible en l'état d'utilise SPIP avec InoDB : il force MyISAM...

Et #4277 fourni le patch pour résoudre ça (et fonctionne en production sur l'Académie de Rennes)

#4 Updated by b b 5 months ago

  • Status changed from En cours to Fermé
  • Resolution set to invalid

Évitons de digresser, on ferme :)

Also available in: Atom PDF