chiave mysql era troppo lungo problema
-
29-09-2019 - |
Domanda
stavo cercando di importare il mio backup dopo il cambiamento ive il charset a utf8 da latin1, ora durante il mio importazione ho ottenuto questo errore ERRORE 1071 (42000) alla riga 2137: specificata chiave è stata troppo a lungo; massima lunghezza della chiave è 1000 byte provare a cambiare my.cnf e impostare tutti i set di caratteri e la connessione al utf8, ma ora la fortuna, non voglio tornare a latin1 e so che questo risolverà il problema, ma il mio carcere utf8 alcun indizio? so latin 1 byte = 1 char e utf8 3 byte = 1 ..
Soluzione
Si può passare da MyISAM a InnoDB, sembra risolvere il prob ..
Altri suggerimenti
Anche se UTF-8 non è sempre 3 byte per ogni carattere, MySQL sta riservando 3 byte per carattere per gli indici.
Se l'applicazione lo consente (vale a dire non è utilizzata in un vincolo UNIQUE KEY), ri-definire / modificare la tabella di utilizzare una chiave prefisso del lunghezza appropriata (cioè <1000/3).
CREATE TABLE my_table .... my_field_20 KEY (my_field (20));
Utilizzare l'opzione --force nel comando mysqldump, ignorerà l'errore e continuare il backup.