soporta - optimizar consultas mysql explain
Hacer columna de texto como clave Ășnica (2)
Quiero hacer una tabla en el servidor MySQL
con columna de texto medio como UNIQUE KEY
CREATE TABLE `parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` mediumtext NOT NULL,
`display_status` int(11) NOT NULL,
UNIQUE KEY `name` (`name`),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
pero esto hizo un error
BLOB/TEXT column ''name'' used in key specification without a key length
cuando cambio el tipo de `nombre` a varchar ... funciona!
¿Puedes decir si puedo hacer una columna de texto como UNIQUE KEY
Básicamente no se puede usar la columna de Text
como clave UNIQUE
. Porque prácticamente una columna tan grande no será única y podría haber más posibilidades de duplicados. Así que vaya para el método hashing
y use esa salida como una restricción ÚNICA.
Espero que esto te ayude
El límite de 255 para la longitud varchar ya no se aplica. De la documentation :
Los valores en las columnas VARCHAR son cadenas de longitud variable. La longitud se puede especificar como un valor de 0 a 255 antes de MySQL 5.0.3 y de 0 a 65,535 en 5.0.3 y versiones posteriores.
Los índices únicos deben tener una longitud máxima conocida (un requisito de mysql debido a su implementación interna), así que use varchar con un valor lo suficientemente grande como para ajustarse a su valor esperado más largo, por ejemplo
...
`name` varchar(65535) NOT NULL, -- for example
...