O erro acontece porque o MySQL pode indexar apenas os primeiros N caracteres de um BLOB ou
TEXT
coluna. Portanto, o erro ocorre principalmente quando há um tipo de campo/coluna de TEXT
ou BLOB ou aqueles que pertencem a TEXT
ou BLOB
tipos como TINYBLOB
, MEDIUMBLOB
, LONGBLOB
, TINYTEXT
, MEDIUMTEXT
e LONGTEXT
que você tenta fazer uma chave primária ou índice. Com BLOB
completo ou TEXT
sem o valor de comprimento, o MySQL não pode garantir a exclusividade da coluna, pois é de tamanho variável e dinâmico. Então, ao usar BLOB
ou TEXT
tipos como um índice, o valor de N deve ser fornecido para que o MySQL possa determinar o comprimento da chave. No entanto, o MySQL não suporta um limite de tamanho de chave em TEXT
ou BLOB
. TEXT(88)
simplesmente não funcionará. O erro também aparecerá quando você tentar converter uma coluna da tabela de
non-TEXT
e non-BLOB
tipo como VARCHAR
e ENUM
em TEXT
ou BLOB
tipo, com a coluna já definida como restrição ou índice exclusivo. O comando Alter Table SQL falhará. A solução para o problema é remover o
TEXT
ou BLOB
coluna do índice ou restrição exclusiva ou defina outro campo como chave primária. Se você não puder fazer isso e quiser colocar um limite no TEXT
ou BLOB
coluna, tente usar VARCHAR
digite e coloque um limite de comprimento nele. Por padrão, VARCHAR
é limitado a um máximo de 255 caracteres e seu limite deve ser especificado implicitamente dentro de um colchete logo após sua declaração, ou seja, VARCHAR(200)
irá limitá-lo a apenas 200 caracteres. Às vezes, mesmo que você não use
TEXT
ou BLOB
tipo relacionado em sua tabela, o erro 1170 também pode aparecer. Isso acontece em uma situação como quando você especifica VARCHAR
coluna como chave primária, mas configurou incorretamente seu comprimento ou tamanho de caracteres. VARCHAR
só pode aceitar até 256 caracteres, então qualquer coisa como VARCHAR(512)
forçará o MySQL a converter automaticamente o VARCHAR(512)
para um SMALLTEXT
tipo de dados, que posteriormente falha com erro 1170 no comprimento da chave se a coluna for usada como chave primária ou índice exclusivo ou não exclusivo. Para resolver este problema, especifique um valor menor que 256 como tamanho para VARCHAR
campo. Referência:Erro MySQL 1170 (42000):Coluna BLOB/TEXT usada na especificação de chave sem um comprimento de chave