Como elimino UNIQUE en MySql?

publicado por: Anonymous

Quiero quitar el UNIQUE de per_id pero no me deja

CREATE TABLE seguidos (
segi_id         int         PRIMARY KEY         AUTO_INCREMENT,
segi_nomSeg     varchar(50) NOT NULL,
per_id          int         NULL    UNIQUE,
segs_id         int         null,
FOREIGN KEY (per_id) REFERENCES perfil(per_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (segs_id) REFERENCES seguidores(segs_id) ON DELETE CASCADE ON UPDATE CASCADE
);

Ejecuto este query y me lanza error

ALTER TABLE seguidos DROP INDEX per_id

Error Code: 1553. Cannot drop index 'per_id': needed in a foreign key constraint

Ejecuto este después del error de arriba para quitar la FK y me lanza error

ALTER TABLE seguidos DROP FOREIGN KEY per_id;

Error Code: 1091. Can't DROP 'per_id'; check that column/key exists

solución

Para ver el nombre de tu llave foránea puedes ejecutar:

show create table seguidos;

Te mostrará algo así:

'CREATE TABLE `seguidos` (n  `segi_id` int(11) NOT NULL
 AUTO_INCREMENT,n  `segi_nomSeg` varchar(50) NOT NULL,n  `per_id` 
 int(11) DEFAULT NULL,n  `segs_id` int(11) DEFAULT NULL,n  PRIMARY 
 KEY
(`segi_id`),n  KEY `segs_id` (`segs_id`),n  CONSTRAINT 
`seguidos_ibfk_1` FOREIGN KEY (`segs_id`) REFERENCES `seguidores` 
 (`segs_id`) ON DELETE CASCADE ON UPDATE CASCADEn) ENGINE=InnoDB 
 DEFAULT 
 CHARSET=utf8'

luego debes eliminar tu llave foránea:

 ALTER TABLE seguidos DROP FOREIGN key seguidos_ibfk_1 #aqui el nombre de llave foránea

Una vez eliminada la LLave foranea ya puedes eliminar tu indice:

ALTER TABLE seguidos DROP index per_id
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *