Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modifier la limite pour la taille de la ligne Mysql trop grande

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 :

  1. Ajoutez ce qui suit au my.cnf fichier sous [mysqld] rubrique.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER la table à utiliser ROW_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