Pregunta

lo que está mal con este comando Modificar tabla:

ALTER TABLE `lp` 
ADD COLUMN `RuleId` INT(10) NOT NULL DEFAULT -111 AFTER `Weight` , , 
ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD INDEX `fk_1` (`RuleId` ASC) ;

si dejo caer la línea

  ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...

su trabajo,

el error que consigo es:

Error Code : 1005
Can't create table '..' (errno: 121)

¿Cómo puedo agregar una clave externa e índice en el mismo campo ?

Actualización:

Trato de separar a 2 consultas, primer índice de complemento y después de que el TDA FOREIGN KEY, el índice agregado, pero la segunda consulta no hacen el trabajo!

cuando cambio el nombre de clave externa (como: 'fk_2') y tratar de ejecutarlo me sale un error: Código de error: 1452 No se puede agregar o actualizar una fila secundaria: una restricción de clave externa falla

¿Fue útil?

Solución

En primer lugar crear el índice y el segundo la restricción de clave externa. MySQL necesita un índice para crear la clave externa, es por eso que usted tiene que crear primero el índice. Use declaraciones separadas también.

Otros consejos

Yo tenía el mismo problema exactamente.

Lo que he encontrado es que no se puede agregar una clave externa si ya existe otra clave externa en la base de datos que tiene el mismo nombre exacto. Incluso si ese otro es clave externa en una tabla diferente.

  

ERROR 1005 (HY000): No se puede crear la tabla './MyDB/#sql-e4a_c715.frm' (Error: 121)   Como se mencionó anteriormente, obtendrá este mensaje si está intentando añadir una restricción con un nombre que ya se utiliza en otro lugar.

(Tomado de aquí )

Así que cambie el nombre a algo al azar para comprobar si estoy en lo cierto ..

Tengo este error después de la combinación de DDL de esquema a partir de N Django aplicaciones usando el comando "manage.py sqlall".

He descubierto que DDL de MySQL requiere que los estados pueden agrupar por tipo en este orden. En concreto, todos ALTER TABLE ... ADD ... EXTERIOR CLAVE ... debe producirse última, o MySQL elevará ese error.

  1. CREATE TABLE ...
  2. CREATE INDEX ...
  3. ALTER TABLE nombre_tabla Nombre Agregar restricción FOREIGN KEY ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top