De vraag is gesteld op serverfault ook.
Misschien wil je een kijkje nemen in dit artikel wat veel verklaart over MySQL-rijgroottes. Het is belangrijk op te merken dat zelfs als u TEXT- of BLOB-velden gebruikt, uw rijgrootte nog steeds meer dan 8K kan zijn (limiet voor InnoDB), omdat het de eerste 768 bytes voor elk veld inline op de pagina opslaat.
De eenvoudigste manier om dit op te lossen, is door het Barracuda-bestandsformaat te gebruiken met InnoDB. Dit lost het probleem in feite helemaal op door alleen de 20 byte-aanwijzer naar de tekstgegevens op te slaan in plaats van de eerste 768 bytes op te slaan.
De methode die daar werkte voor de OP was:
-
Voeg het volgende toe aan de
my.cnf
bestand onder[mysqld]
sectie.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
de te gebruiken tabelROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Het is mogelijk dat het bovenstaande uw problemen nog steeds niet oplost. Het is een bekende (en geverifieerde) bug
met de InnoDB engine, en een tijdelijke oplossing voor nu is om terug te vallen op MyISAM motor als tijdelijke opslag. Dus, in uw my.cnf
bestand:
internal_tmp_disk_storage_engine=MyISAM