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

Mysql::Error:la chiave specificata era troppo lunga; la lunghezza massima della chiave è 1000 byte

Questo è solo un problema di MySQL -

MySQL ha diversi motori:MyISAM, InnoDB, Memory...

MySQL ha limiti diversi sulla quantità di spazio che puoi usare per definire gli indici sulle colonne - per MyISAM sono 1.000 byte; è 767 per InnoDB . E il tipo di dati di queste colonne è importante, per VARCHAR , è 3x quindi un indice su un VARCHAR(100) prenderà 300 di quei byte (perché 100 caratteri * 3 =300).

Per accogliere un po' di indicizzazione quando raggiungi il valore massimo, puoi definire l'indice in relazione alle parti del tipo di dati della colonna:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Supponendo che your_column è VARCHAR(100) , l'indice nell'esempio precedente sarà solo sui primi 50 caratteri. La ricerca di dati oltre il 50° carattere non sarà in grado di utilizzare l'indice.