La question a été posée sur serverfault aussi.
Vous voudrez peut-être jeter un œil à cet article ce qui explique beaucoup de tailles de lignes MySQL. Il est important de noter que même si vous utilisez des champs TEXT ou BLOB, la taille de votre ligne peut toujours être supérieure à 8 Ko (limite pour InnoDB) car elle stocke les 768 premiers octets pour chaque champ en ligne dans la page.
Le moyen le plus simple de résoudre ce problème consiste à utiliser le format de fichier Barracuda avec InnoDB. Cela élimine fondamentalement le problème en ne stockant que le pointeur de 20 octets vers les données de texte au lieu de stocker les 768 premiers octets.
La méthode qui a fonctionné pour l'OP était :
-
Ajoutez ce qui suit au
my.cnf
fichier sous[mysqld]
rubrique.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
la table à utiliserROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Il est possible que ce qui précède ne résolve toujours pas vos problèmes. C'est un bug connu (et vérifié)
avec InnoDB moteur, et une solution temporaire pour l'instant consiste à se rabattre sur MyISAM moteur comme stockage temporaire. Donc, dans votre my.cnf
fichier :
internal_tmp_disk_storage_engine=MyISAM