J'ai un problème avec MySQL, j'ai une table avec de nombreux champs de texte. Lorsque j'essaie de stocker des données, j'obtiens cette erreur.
Taille de ligne trop grande. La taille de ligne maximale pour le type de table utilisé, sans compter les BLOBs, est 8126. Vous devez changer certaines colonnes en TEXT ou BLOBs
Le texte que je stocke dans chaque champ n'est pas trop long, seulement quelques paragraphes dans chacun.
Que puis-je faire?
Vous voudrez peut-être jeter un œil à cet article qui explique beaucoup de choses sur les tailles de ligne MySQL. Il est important de noter que même si vous utilisez des champs TEXT ou BLOB, la taille de votre ligne peut toujours dépasser 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 stockant uniquement le pointeur de 20 octets sur les données de texte au lieu de stocker les 768 premiers octets.
la source
Eh bien, faites comme mysql le dit: convertissez les grands champs de varchar en texte ou en blob (ALTER TABLE). les champs de texte se comportent un peu comme varchar (les index nécessitent une longueur de préfixe, mais fonctionnent néanmoins), mais sont stockés séparément.
Cette référence vous indique les limites exactes de chaque moteur de table mysql d'origine:
http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
Et voici tout ce qu'il faut savoir sur les champs de texte:
http://dev.mysql.com/doc/refman/5.0/en/blob.html
la source
Surtout la publication croisée de Stack Overflow , mais il s'agit d' un bogue ouvert (et vérifié) dans le moteur InnoDB du serveur MySQL . Un correctif temporaire pour l'instant consiste à recourir au moteur MyISAM en tant que stockage temporaire. Donc, dans votre fichier my.cnf:
la source