Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql::Error:A chave especificada era muito longa; comprimento máximo da chave é 1000 bytes


Este é apenas um problema do MySQL -

MySQL tem diferentes engines - MyISAM, InnoDB, Memory...

O MySQL tem limites diferentes na quantidade de espaço que você pode usar para definir índices na(s) coluna(s) - para MyISAM são 1.000 bytes; é 767 para InnoDB . E o tipo de dados dessas colunas é importante - para VARCHAR , é 3x, portanto, um índice em um VARCHAR(100) levará 300 desses bytes (porque 100 caracteres * 3 =300).

Para acomodar alguma indexação quando atingir o valor máximo, você pode definir o índice em relação a partes do tipo de dados da coluna:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Supondo que your_column é VARCHAR(100) , o índice no exemplo acima estará apenas nos primeiros 50 caracteres. A pesquisa de dados além do 50º caractere não poderá usar o índice.