Comment corriger l’erreur « 1118 Taille de ligne trop grande. La taille de ligne maximale pour le type de tableau utilisé, sans compter les BLOB, est de 8126. » ?
Le message d’erreur complet ressemble généralement à ceci :
> L’erreur est la suivante : SQLSTATE[42000] : Erreur de syntaxe ou violation d’accès : 1118 Taille de ligne trop grande. La taille de ligne maximale pour le type de tableau utilisé, sans compter les BLOB, est de 8126. Cela inclut les frais généraux de stockage, consultez le manuel. Vous devez changer certaines colonnes en TEXTE ou en BLOB
Vous avez généralement deux options pour résoudre ce problème.
Option 1 – changer le format des lignes (recommandé)
Pour le tableau en question, exécutez une requête comme celle-ci et assurez-vous de remplacer log_visit
par le nom de la table qui est à l’origine de ce problème :
ALTER TABLE matomo_log_visit ROW_FORMAT=DYNAMIC;
Option 2 – modifier le type de certaines dimensions personnalisées ou variables personnalisées existantes
si vous utilisez de nombreuses dimensions personnalisées
Si vous utilisez de nombreuses dimensions personnalisées, la conversion de certaines d’entre elles en TEXT
peut s’avérer utile. Vous pouvez convertir autant de colonnes que nécessaire. Cela peut aussi être utile si vous essayez d’ajouter plus de dimensions personnalisées mais que vous ne pouvez pas ajouter plus d’emplacements parce que vous vous êtes heurté à cette limite.
ALTER TABLE matomo_log_visit MODIFY COLUMN custom_dimension_1 TEXT, MODIFY COLUMN custom_dimension_2 TEXT, MODIFY COLUMN custom_dimension_3 TEXT, MODIFY COLUMN custom_dimension_4 TEXT, MODIFY COLUMN custom_dimension_5 TEXT;
Si vous utilisez plus de 5 dimensions personnalisées, vous pouvez ajouter d’autres instructions dans la requête, par exemple : , MODIFY COLUMN custom_dimension_6 TEXT
.
si vous utilisez de nombreuses variables personnalisées
Si vous avez beaucoup de variables personnalisées, vous pouvez les convertir en TEXT afin qu’elles ne comptent plus dans la taille des lignes de MySQL :
ALTER TABLE matomo_log_visit MODIFY COLUMN custom_var_k1 TEXT, MODIFY COLUMN custom_var_v1 TEXT, MODIFY COLUMN custom_var_k2 TEXT, MODIFY COLUMN custom_var_v2 TEXT;
En fonction du préfixe de votre tableau de base de données configuré, vous devrez peut-être remplacer matomo_log_visit
par piwik_log_visit
ou log_visit
par exemple dans les requêtes SQL ci-dessus.