Mysql
 sql >> Database >  >> RDS >> Mysql

Modifica il limite per la dimensione della riga di MySQL troppo grande

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:

  1. Aggiungi quanto segue a my.cnf file sotto [mysqld] sezione.

    innodb_file_per_table=1
    innodb_file_format = Barracuda
    
  2. ALTER la tabella da usare ROW_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