El error ocurre porque MySQL puede indexar solo los primeros N caracteres de un BLOB o TEXT columna. Entonces, el error ocurre principalmente cuando hay un tipo de campo/columna de TEXT o BLOB o aquellos que pertenecen a TEXT o BLOB tipos como TINYBLOB , MEDIUMBLOB , LONGBLOB , TINYTEXT , MEDIUMTEXT y LONGTEXT que intenta crear una clave principal o un índice. Con BLOB completo o TEXT sin el valor de longitud, MySQL no puede garantizar la unicidad de la columna, ya que tiene un tamaño variable y dinámico. Entonces, al usar BLOB o TEXT tipos como un índice, se debe proporcionar el valor de N para que MySQL pueda determinar la longitud de la clave. Sin embargo, MySQL no admite un límite de longitud de clave en TEXT o BLOB . TEXT(88) simplemente no funcionará.
El error también aparecerá cuando intente convertir una columna de tabla de non-TEXT y non-BLOB tipo como VARCHAR y ENUM en TEXT o BLOB type, con la columna ya definida como índice o restricciones únicas. El comando Alter Table SQL fallará.
La solución al problema es eliminar el TEXT o BLOB columna del índice o restricción única o establezca otro campo como clave principal. Si no puede hacer eso y quiere poner un límite en el TEXT o BLOB columna, intente usar VARCHAR escriba y coloque un límite de longitud en él. Por defecto, VARCHAR está limitado a un máximo de 255 caracteres y su límite debe especificarse implícitamente entre corchetes justo después de su declaración, es decir, VARCHAR(200) lo limitará a 200 caracteres solamente.
A veces, aunque no uses TEXT o BLOB tipo relacionado en su tabla, también puede aparecer el error 1170. Ocurre en una situación como cuando especifica VARCHAR columna como clave principal, pero configuró incorrectamente su longitud o tamaño de caracteres. VARCHAR solo puede aceptar hasta 256 caracteres, por lo que algo como VARCHAR(512) obligará a MySQL a convertir automáticamente el VARCHAR(512) a un SMALLTEXT tipo de datos, que posteriormente falla con el error 1170 en la longitud de la clave si la columna se usa como clave principal o índice único o no único. Para resolver este problema, especifique una cifra inferior a 256 como tamaño para VARCHAR campo.