que utiliza MySQL Workbench para agregar una clave externa en una tabla, pero ocurrió algún error extraño, esta es la instrucción SQL:no se puede agregar una clave externa en mysql?
ALTER TABLE `tansung`.`Declaration` ADD COLUMN `goodsId` INT(11) NOT NULL AFTER `declarationId` ,
ADD CONSTRAINT `goodsId`
FOREIGN KEY (`goodsId`)
REFERENCES `tansung`.`Goods` (`goodsId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `goodsId` (`goodsId` ASC) ;
Cuando hago clic en aplicar, la sorpresa sale!
ERROR 1005: Can't create table 'tansung.#sql-1b10_1' (errno: 150)
SQL Statement:
ALTER TABLE `tansung`.`Declaration` ADD COLUMN `goodsId` INT(11) NOT NULL AFTER `declarationId` ,
ADD CONSTRAINT `goodsId`
FOREIGN KEY (`goodsId`)
REFERENCES `tansung`.`Goods` (`goodsId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `goodsId` (`goodsId` ASC)
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'Declaration' already exists
SQL Statement:
CREATE TABLE `Declaration` (
`declarationId` int(11) NOT NULL,
PRIMARY KEY (`declarationId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
No puedo encontrar ningún error en la lógica, incluso no puedo entender el error, por favor ayúdenme.
el error parece bastante autoexplicativo; Está intentando crear una tabla llamada 'Declaración' que ya existe ... –
Asegúrese de no estar ejecutando todo el código SQL en una ventana. Parece que está ejecutando el código ALTER TABLE seguido inmediatamente por el código CREATE TABLE ... asegúrese de que solo está ejecutando el código ALTER TABLE para evitar ese error. – acconrad
@Brian Driscoll el error real viene en la parte superior del bloque de código 'ERROR 1005: No se puede crear la tabla 'tansung. # Sql-1b10_1' (errno: 150)' –