La domanda è stata posta su serverfault anche.
Potresti dare un'occhiata a questo articolo il che spiega molto sulle dimensioni delle righe di MySQL. È importante notare che anche se utilizzi i campi TESTO o BLOB, la dimensione della tua riga potrebbe comunque essere superiore a 8 K (limite per InnoDB) perché memorizza i primi 768 byte per ogni campo in linea nella pagina.
Il modo più semplice per risolvere questo problema è utilizzare il formato di file Barracuda con InnoDB. Questo sostanzialmente elimina del tutto il problema memorizzando solo il puntatore da 20 byte ai dati di testo invece di memorizzare i primi 768 byte.
Il metodo che ha funzionato per l'OP era:
-
Aggiungi quanto segue a
my.cnffile sotto[mysqld]sezione.innodb_file_per_table=1 innodb_file_format = Barracuda -
ALTERla tabella da usareROW_FORMAT=COMPRESSED.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
È possibile che quanto sopra non risolva ancora i tuoi problemi. È un bug noto (e verificato)
con InnoDB motore e una soluzione temporanea per ora è il fallback a MyISAM motore come deposito temporaneo. Quindi, nel tuo my.cnf file:
internal_tmp_disk_storage_engine=MyISAM