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.cnf
file sotto[mysqld]
sezione.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
la 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