2014-10-23 7 views
0

im stuck и ошибка в форвардной инженерии Моя модель :(Я не знаю, как ее решить: у меня была аналогичная проблема раньше, и это было просто изменение положения первичного ключа, а затем работал, но на этот раз оно не по какой-то причине:./Передовая инженерия mysql workbench

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 [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS; 
+0

4 первичных ключа на 1 столе? Это действительно хорошая практика? –

ответ

0

Когда вы создаете таблицу werkzeugewerkzeugführungen

`flansch` VARCHAR(45) NOT NULL 

должен быть на самом деле

`flansch` VARCHAR(45) NOT NULL UNIQUE 

В столбце FLANSCH определяет первичный ключ в werkzeugführungen и первичный ключ должен быть уникальным.

+0

yep, если вы пытаетесь установить значение по умолчанию для pk, оно также не может быть автоинкрементным, что является проблемой, которую я имел. Включите AI, и значение по умолчанию будет выключено. проблема решена. – mewc

 Смежные вопросы

  • Нет связанных вопросов^_^