Llevo ya bastantes días intentando solventar este error, y he terminado por darme por vencido tras realizar múltiples cambios y comprobar que al compilar todo sigue igual.
Código SQL:
Ver original
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; DROP SCHEMA IF EXISTS `BDTaller` ; CREATE SCHEMA IF NOT EXISTS `BDTaller` DEFAULT CHARACTER SET latin1 ; USE `BDTaller` ; -- ----------------------------------------------------- -- Table `BDTaller`.`Clientes` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Clientes` ( `DNI` VARCHAR(9) NOT NULL , `Nombre` CHAR(45) NOT NULL , `Apellidos` CHAR(45) NOT NULL , `Dirección` VARCHAR(45) NOT NULL , `Teléfono` INT(9) NOT NULL , PRIMARY KEY (`DNI`) ) ENGINE = InnoDB; CREATE UNIQUE INDEX `DNI_UNIQUE` ON `BDTaller`.`Clientes` (`DNI` ASC) ; -- ----------------------------------------------------- -- Table `BDTaller`.`Operarios` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Operarios` ( `idOperarios` INT NOT NULL , `Nombre` CHAR(45) NOT NULL , `Apellidos` CHAR(45) NOT NULL , `Dirección` VARCHAR(45) NOT NULL , `Teléfono` INT(9) NOT NULL , PRIMARY KEY (`idOperarios`) ) ENGINE = InnoDB; CREATE UNIQUE INDEX `idOperarios_UNIQUE` ON `BDTaller`.`Operarios` (`idOperarios` ASC) ; CREATE UNIQUE INDEX `Teléfono_UNIQUE` ON `BDTaller`.`Operarios` (`Teléfono` ASC) ; -- ----------------------------------------------------- -- Table `BDTaller`.`Coches` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Coches` ( `Matrícula` VARCHAR(20) NOT NULL , `Marca` VARCHAR(45) NOT NULL , `Modelo` VARCHAR(45) NOT NULL , `Fecha_Inicio` DATE NOT NULL , `Fecha_Fin` DATE NULL , `Motivo` VARCHAR(254) NOT NULL , `Finalizado` TINYINT(1) NOT NULL , `DNI` VARCHAR(9) NOT NULL , `idOperarios` INT NOT NULL , PRIMARY KEY (`Matrícula`) , CONSTRAINT `DNI` FOREIGN KEY (`DNI` ) REFERENCES `BDTaller`.`Clientes` (`DNI` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `idOperarios` FOREIGN KEY (`idOperarios` ) REFERENCES `BDTaller`.`Operarios` (`idOperarios` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; CREATE UNIQUE INDEX `Matrícula_UNIQUE` ON `BDTaller`.`Coches` (`Matrícula` ASC) ; CREATE INDEX `DNI` ON `BDTaller`.`Coches` (`DNI` ASC) ; CREATE INDEX `idOperarios` ON `BDTaller`.`Coches` (`idOperarios` ASC) ; -- ----------------------------------------------------- -- Table `BDTaller`.`Facturas` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Facturas` ( `idFacturas` INT NOT NULL , `Precio` DOUBLE NOT NULL , `DNI` VARCHAR(9) NOT NULL , `IdOperarios` INT NOT NULL , `Matrícula` VARCHAR(20) NOT NULL , PRIMARY KEY (`idFacturas`) ) ENGINE = InnoDB; CREATE UNIQUE INDEX `idFacturas_UNIQUE` ON `BDTaller`.`Facturas` (`idFacturas` ASC) ; -- ----------------------------------------------------- -- Table `BDTaller`.`Proveedores` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Proveedores` ( `idProveedor` INT NOT NULL AUTO_INCREMENT , `Nombre` VARCHAR(45) NOT NULL , `Dirección` VARCHAR(45) NOT NULL , `Teléfono` INT(9) NOT NULL , PRIMARY KEY (`idProveedor`) ) ENGINE = InnoDB; CREATE UNIQUE INDEX `idProveedor_UNIQUE` ON `BDTaller`.`Proveedores` (`idProveedor` ASC) ; CREATE UNIQUE INDEX `Teléfono_UNIQUE` ON `BDTaller`.`Proveedores` (`Teléfono` ASC) ; -- ----------------------------------------------------- -- Table `BDTaller`.`Almacenes` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Almacenes` ( `idAlmacenes` INT NOT NULL , `Nombre` CHAR(45) NULL , PRIMARY KEY (`idAlmacenes`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDTaller`.`Productos` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDTaller`.`Productos` ( `idProductos` INT NOT NULL AUTO_INCREMENT , `Nombre` CHAR(45) NOT NULL , `Precio` DOUBLE NOT NULL , `Unidades` INT NOT NULL , `idProveedor` INT NOT NULL , `idAlmacenes` INT NOT NULL , PRIMARY KEY (`idProductos`) , CONSTRAINT `idProveedor` FOREIGN KEY (`idProveedor` ) REFERENCES `BDTaller`.`Proveedores` (`idProveedor` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `idAlmacenes` FOREIGN KEY (`idAlmacenes` ) REFERENCES `BDTaller`.`Almacenes` (`idAlmacenes` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; CREATE UNIQUE INDEX `idProductos_UNIQUE` ON `BDTaller`.`Productos` (`idProductos` ASC) ; CREATE INDEX `idProveedor` ON `BDTaller`.`Productos` (`idProveedor` ASC) ; CREATE INDEX `idAlmacenes` ON `BDTaller`.`Productos` (`idAlmacenes` ASC) ; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
El error en cuestión me los da en todas las líneas referentes a la llave foránea:
- CREATE INDEX `DNI` ON `BDTaller`.`Coches` (`DNI` ASC) ;
Estoy trabajando con MySQL WorkBench.
Gracias