2016-10-31 51 views
0

我在MySQL Workbench中創建了一個完整的數據庫,現在我試圖通過phpMyAdmin將其導入到我的Web主機上的數據庫。該工作臺創建以下代碼:MySQL Workbench在phpMyAdmin中執行時創建SQL語句錯誤

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_idxSandwich_ID ASC), INDEX Sauce_ID_idxSauce_ID ASC), 約束Sandwich_ID 外鍵(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 

回答

1

您必須在CREATE TABLE IF NOT EXISTS usr_web375_4增加對Sandwich_ID和Sauce_ID一個類型。三明治醬...

並且您必須爲所有索引和約束使用唯一的名稱。

難道你試試這個代碼:

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 

或者在工作臺上,你可以運行此查詢,並再次導出DB:

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; 
+0

什麼是錯誤訊息? – Imanez

+0

我在我的問題信息中更新了錯誤信息;),現在我添加了另一個我創建的表,因爲我認爲它可能與它有關。 –

+0

我認爲這個問題是你的指數Sandwich_ID_idx的名字,你已經用你的SandwichVegtable表這個名字,所以試圖改變它 – Imanez