sql >> Base de Datos >  >> RDS >> Mysql

Mysql::Error:la clave especificada era demasiado larga; la longitud máxima de la clave es de 1000 bytes

Esto es únicamente un problema de MySQL -

MySQL tiene diferentes motores:MyISAM, InnoDB, Memory...

MySQL tiene diferentes límites en la cantidad de espacio que puede usar para definir índices en la(s) columna(s) - para MyISAM son 1000 bytes; es 767 para InnoDB . Y el tipo de datos de esas columnas importa - para VARCHAR , es 3x por lo que un índice en un VARCHAR(100) tomará 300 de esos bytes (porque 100 caracteres * 3 =300).

Para acomodar cierta indexación cuando alcanza el valor máximo, puede definir el índice con respecto a partes del tipo de datos de la columna:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Suponiendo que your_column es VARCHAR(100) , el índice en el ejemplo anterior solo estará en los primeros 50 caracteres. La búsqueda de datos más allá del carácter 50 no podrá utilizar el índice.