Le message d'erreur "Taille de ligne trop grande (> 8126)" indique qu'une ligne dans une table MySQL dépasse la limite par défaut de 8 Ko. Plusieurs facteurs contribuent à ce problème, notamment les types de données utilisés dans les colonnes du tableau.
Une solution potentielle consiste à modifier certaines colonnes en types de données TEXTE ou BLOB, car celles-ci peuvent contenir de plus grandes quantités de données. De plus, l'utilisation de ROW_FORMAT=DYNAMIC ou ROW_FORMAT=COMPRESSED peut également aider à réduire la taille des lignes en stockant les données de manière plus efficace.
Cependant, le message d'erreur fourni suggère que même avec ces modifications, la taille des lignes peut toujours être trop grand. En effet, le moteur de stockage InnoDB stocke les 768 premiers octets de données BLOB en ligne dans la ligne, limitant ainsi davantage la taille de la ligne.
Pour résoudre ce problème, envisagez de mettre en œuvre les solutions suivantes :
Passer au fichier Barracuda Format :
Ajoutez ce qui suit au fichier my.cnf :
innodb_file_per_table=1
- This file format removes the issue of storing BLOB data inline, allowing larger rows to be accommodated.
Utiliser ROW_FORMAT=COMPRESSED :
Exécutez la requête suivante pour modifier la structure de la table :
ALTER TABLE table_name ENGINE=InnoDB ROW_FORMAT=COMPRESSED
- This setting reduces the row size by compressing non-key columns, potentially resolving the issue.
Si les solutions ci-dessus ne parviennent toujours pas à résoudre le problème problème, envisagez de passer temporairement au moteur MyISAM pour stocker les données temporaires en ajoutant la ligne suivante au fichier my.cnf :
internal_tmp_disk_storage_engine=MyISAM
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!