MySQL Workbench создает ошибку операторов SQL при реализации в phpMyAdmin

Я создал всю базу данных в MySQL Workbench и теперь пытаюсь импортировать ее в свою БД на своем веб-хостинге через phpMyAdmin. Workbench создал следующий код:

CREATE TABLE IF NOT EXISTS `usr_web375_4`.`Sandwich` (
  `Sandwich_ID` INT NOT NULL,
  `Style_ID` INT NOT NULL,
  `Bread_ID` INT NOT NULL,
  `Cheese_ID` INT NULL,
  `Size_ID` INT NOT NULL,
  `Sandwich_Toasted` TINYINT(1) NOT NULL,
  `Sandwich_Prize` FLOAT NOT NULL,
  PRIMARY KEY (`Sandwich_ID`),
  INDEX `Style_ID_idx` (`Style_ID` ASC),
  INDEX `Bread_ID_idx` (`Bread_ID` ASC),
  INDEX `Cheese_ID_idx` (`Cheese_ID` ASC),
  INDEX `Size_ID_idx` (`Size_ID` ASC),
  CONSTRAINT `Style_ID`
    FOREIGN KEY (`Style_ID`)
    REFERENCES `usr_web375_4`.`Style` (`Style_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Bread_ID`
    FOREIGN KEY (`Bread_ID`)
    REFERENCES `usr_web375_4`.`Bread` (`Bread_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Cheese_ID`
    FOREIGN KEY (`Cheese_ID`)
    REFERENCES `usr_web375_4`.`Cheese` (`Cheese_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Size_ID`
    FOREIGN KEY (`Size_ID`)
    REFERENCES `usr_web375_4`.`Size` (`Size_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `usr_web375_4`.`Sauce` (
  `Sauce_ID` INT NOT NULL,
  `Sauce_Name` VARCHAR(45) NULL,
  `Sauce_IMG` VARCHAR(45) NULL,
  `Sauce_Nutrition` INT NULL,
  PRIMARY KEY (`Sauce_ID`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `usr_web375_4`.`SandwichSauce`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `usr_web375_4`.`SandwichSauce` (
  `SandwichSauce_ID` INT NOT NULL,
  `Sandwich_ID` INT NOT NULL,
  `Sauce_ID` INT NOT NULL,
  PRIMARY KEY (`SandwichSauce_ID`),
  INDEX `Sandwich_ID_idx` (`Sandwich_ID` ASC),
  INDEX `Sauce_ID_idx` (`Sauce_ID` ASC),
  CONSTRAINT `Sandwich_ID`
    FOREIGN KEY (`Sandwich_ID`)
    REFERENCES `usr_web375_4`.`Sandwich` (`Sandwich_ID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `Sauce_ID`
    FOREIGN KEY (`Sauce_ID`)
    REFERENCES `usr_web375_4`.`Sauce` (`Sauce_ID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

я пробовал либо с функцией импорта, либо с разделом кода. Это дает мне следующую ошибку:

CREATE TABLE IF NOT EXISTS `usr_web375_4`.`SandwichSauce` (

SandwichSauce_ID INT NOT NULL, Sandwich_ID INT NOT NULL, Sauce_ID INT NOT NULL, PRIMARY KEY (SandwichSauce_ID), INDEX Sandwich_ID_idx (Sandwich_ID ASC), INDEX Sauce_ID_idx (Sauce_ID ASC), CONSTRAINT Sandwich_ID FOREIGN KEY (Sandwich_ID)

#1005 - Can't create table 'usr_web375_4.SandwichSauce' (errno: 121) (Details…) 

Я не понимаю. в верстаке ошибок не было

Я не уверен, что это как-то связано с этой таблицей, которую я успешно создал:

CREATE TABLE IF NOT EXISTS `usr_web375_4`.`SandwichVegtable` (
  `SandwichVegtable_ID` INT NOT NULL,
  `Sandwich_ID` INT NOT NULL,
  `Vegtable_ID` INT NOT NULL,
  PRIMARY KEY (`SandwichVegtable_ID`),
  INDEX `Sandwich_ID_idx` (`Sandwich_ID` ASC),
  INDEX `Vegtable_ID_idx` (`Vegtable_ID` ASC),
  CONSTRAINT `Sandwich_ID`
    FOREIGN KEY (`Sandwich_ID`)
    REFERENCES `usr_web375_4`.`Sandwich` (`Sandwich_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Vegtable_ID`
    FOREIGN KEY (`Vegtable_ID`)
    REFERENCES `usr_web375_4`.`Vegtable` (`Vegtable_ID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

person J. Doe    schedule 31.10.2016    source источник


Ответы (1)


Вы должны добавить тип для Sandwich_ID и Sauce_ID в свой CREATE TABLE IF NOT EXISTSusr_web375_4.SandwichSauce...

и вы должны использовать уникальные имена для всех ваших индексов и ограничений.

Не могли бы вы попробовать этот код:

CREATE TABLE IF NOT EXISTS `usr_web375_4`.`SandwichSauce` (
  `SandwichSauce_ID` INT NOT NULL,
  `Sandwich_ID` INT NOT NULL,
  `Sauce_ID` INT NOT NULL,
  PRIMARY KEY (`SandwichSauce_ID`),
  INDEX `Sandwich_ID_idx` (`Sandwich_ID` ASC),
  INDEX `Sauce_ID_idx` (`Sauce_ID` ASC),
  CONSTRAINT `Sandwich_ID_1`
    FOREIGN KEY (`Sandwich_ID`)
    REFERENCES `usr_web375_4`.`Sandwich` (`Sandwich_ID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `Sauce_ID`
    FOREIGN KEY (`Sauce_ID`)
    REFERENCES `usr_web375_4`.`Sauce` (`Sauce_ID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB

Или в рабочей среде вы можете запустить этот запрос и снова экспортировать БД:

 ALTER TABLE `SandwichSauce` DROP FOREIGN KEY `Sandwich_ID`;
 ALTER TABLE `SandwichSauce` ADD CONSTRAINT `Sandwich_ID_1` FOREIGN KEY (`Sandwich_ID`) REFERENCES `usr_web375_4`.`Sandwich`(`Sandwich_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
person Imanez    schedule 31.10.2016
comment
Я также обновил сообщение об ошибке в своем вопроснике;) и теперь я добавляю еще одну таблицу, которую я создал, потому что я думаю, что это может иметь какое-то отношение к этому. - person J. Doe; 31.10.2016
comment
Думаю проблема в названии вашего индекса Sandwich_ID_idx, вы уже использовали это имя в своей таблице SandwichVegtable, так что попробуйте его изменить - person Imanez; 31.10.2016
comment
Если я полностью оставлю это или если я изменю имя индекса, все равно появится то же сообщение об ошибке. - person J. Doe; 31.10.2016
comment
Давайте продолжим обсуждение в чате. - person Imanez; 31.10.2016