Форвард инжиниринг MySQL верстак
Я застрял и у меня есть ошибка в форвард-инжиниринге моей модели:(Я не знаю, как ее решить:/ У меня была похожая проблема раньше, и она просто меняла положение первичного ключа, а затем это работало, но на этот раз это не для некоторая причина:/
Executing SQL script in server
ERROR: Error 1005: Can't create table 'werkzeuge.flansch' (errno: 150)
SQL Code:
-- -----------------------------------------------------
-- Table `werkzeuge`.`flansch`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`flansch` (
`typ` VARCHAR(45) NOT NULL,
`bestellt` INT NULL,
`fertigung` INT NULL,
`lieferant` VARCHAR(50) NULL,
`lager` INT NULL,
`lagerplatz` VARCHAR(45) NULL,
`gewicht` DECIMAL NULL,
`e_k_preis` DECIMAL NULL,
`v_k_preis` DECIMAL NULL,
PRIMARY KEY (`typ`),
INDEX `fk_flansch_werkzeugführungen1_idx` (`typ` ASC),
CONSTRAINT `fk_flansch_werkzeugführungen1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugführungen` (`flansch`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 8 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
И это мой оператор создания для моих таблиц для базы данных
CREATE SCHEMA IF NOT EXISTS `werkzeuge` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `werkzeuge` ;
-- -----------------------------------------------------
-- Table `werkzeuge`.`maschinen`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`maschinen` (
`werkzeugsatz` VARCHAR(45) NOT NULL,
`typ` VARCHAR(50) NOT NULL,
`maschinenkörper` VARCHAR(45) NOT NULL,
`elektrik` VARCHAR(45) NOT NULL,
`pneumatic` VARCHAR(45) NOT NULL,
`hydraulik` VARCHAR(45) NOT NULL,
`kühlvorrichtung` VARCHAR(45) NOT NULL,
`vorschubeinheit` VARCHAR(45) NOT NULL,
PRIMARY KEY (`werkzeugsatz`, `typ`, `maschinenkörper`, `elektrik`, `pneumatic`, `hydraulik`, `kühlvorrichtung`, `vorschubeinheit`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`werkzeugsätze_gierth`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`werkzeugsätze_gierth` (
`werkzeugführung` VARCHAR(45) NOT NULL,
`messerhalter` VARCHAR(45) NOT NULL,
`zentrierkronen` VARCHAR(45) NOT NULL,
`spanvorichtung` VARCHAR(45) NOT NULL,
`werkzeugsatz` VARCHAR(45) NOT NULL,
PRIMARY KEY (`werkzeugführung`, `messerhalter`, `zentrierkronen`, `spanvorichtung`),
INDEX `fk_werkzeugsätze_gierth_maschinen_idx` (`werkzeugsatz` ASC),
CONSTRAINT `fk_werkzeugsätze_gierth_maschinen`
FOREIGN KEY (`werkzeugsatz`)
REFERENCES `werkzeuge`.`maschinen` (`werkzeugsatz`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`werkzeugführungen`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`werkzeugführungen` (
`oberteilführung` VARCHAR(45) NOT NULL,
`flansch` VARCHAR(45) NOT NULL,
`passfeder` VARCHAR(45) NOT NULL,
`flansch_mit_führung` VARCHAR(45) NOT NULL,
`länge` INT NULL,
`wf_komplett` VARCHAR(45) NULL,
`jahresbedarf` VARCHAR(45) NULL,
`typ` VARCHAR(45) NOT NULL,
PRIMARY KEY (`oberteilführung`, `flansch`, `passfeder`, `flansch_mit_führung`),
INDEX `fk_werkzeugführungen_werkzeugsätze_gierth1_idx` (`typ` ASC),
CONSTRAINT `fk_werkzeugführungen_werkzeugsätze_gierth1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugsätze_gierth` (`werkzeugführung`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`flansch`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`flansch` (
`typ` VARCHAR(45) NOT NULL,
`bestellt` INT NULL,
`fertigung` INT NULL,
`lieferant` VARCHAR(50) NULL,
`lager` INT NULL,
`lagerplatz` VARCHAR(45) NULL,
`gewicht` DECIMAL NULL,
`e_k_preis` DECIMAL NULL,
`v_k_preis` DECIMAL NULL,
PRIMARY KEY (`typ`),
INDEX `fk_flansch_werkzeugführungen1_idx` (`typ` ASC),
CONSTRAINT `fk_flansch_werkzeugführungen1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugführungen` (`flansch`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`oberteilführung`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`oberteilführung` (
`typ` VARCHAR(45) NOT NULL,
`bestellt` INT NULL,
`fertigung` VARCHAR(45) NULL,
`lieferant` VARCHAR(45) NULL,
`lager` VARCHAR(45) NULL,
`lagerplatz` VARCHAR(45) NULL,
`gewicht` VARCHAR(45) NULL,
`e_k_preis` VARCHAR(45) NULL,
`v_k_preis` VARCHAR(45) NULL,
PRIMARY KEY (`typ`),
INDEX `fk_oberteilführung_werkzeugführungen1_idx` (`typ` ASC),
CONSTRAINT `fk_oberteilführung_werkzeugführungen1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugführungen` (`oberteilführung`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`flansch_mit_führung`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`flansch_mit_führung` (
`typ` VARCHAR(45) NOT NULL,
`bestellt` INT NULL,
`fertigung` VARCHAR(45) NULL,
`lieferant` VARCHAR(45) NULL,
`lager` VARCHAR(45) NULL,
`lagerplatz` VARCHAR(45) NULL,
`gewicht` VARCHAR(45) NULL,
`e_k_preis` VARCHAR(45) NULL,
`v_k_preis` VARCHAR(45) NULL,
INDEX `fk_flansch_mit_führung_werkzeugführungen1_idx` (`typ` ASC),
PRIMARY KEY (`typ`),
CONSTRAINT `fk_flansch_mit_führung_werkzeugführungen1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugführungen` (`flansch_mit_führung`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `werkzeuge`.`passfeder`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `werkzeuge`.`passfeder` (
`typ` VARCHAR(45) NOT NULL,
`bestellt` INT NULL,
`fertigung` VARCHAR(45) NULL,
`lieferant` VARCHAR(45) NULL,
`lager` VARCHAR(45) NULL,
`lagerplatz` VARCHAR(45) NULL,
`gewicht` VARCHAR(45) NULL,
`e_k_preis` VARCHAR(45) NULL,
`v_k_preis` VARCHAR(45) NULL,
PRIMARY KEY (`typ`),
INDEX `fk_passfeder_werkzeugführungen1_idx` (`typ` ASC),
CONSTRAINT `fk_passfeder_werkzeugführungen1`
FOREIGN KEY (`typ`)
REFERENCES `werkzeuge`.`werkzeugführungen` (`passfeder`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
1 ответ
Когда вы создаете таблицу werkzeuge
,werkzeugführungen
`flansch` VARCHAR(45) NOT NULL
должно быть на самом деле
`flansch` VARCHAR(45) NOT NULL UNIQUE
Столбец flansch определяет первичный ключ в werkzeugführungen, а первичный ключ должен быть уникальным.