2012-03-30 89 views
0

我建模使用MySQL工作臺CE EER建模我的數據庫瑪,現在我被困在與MySQL錯誤號150Mysql的正向工程錯誤號150

我的SQL代碼:

CREATE TABLE `myschema`.`Clients` (
    `phone` VARCHAR(15) NOT NULL , 
    `surname` VARCHAR(30) NOT NULL , 
    `name` VARCHAR(30) NOT NULL , 
    `middleName` VARCHAR(30) NULL , 
    `discountCardNumber` BIGINT NULL , 
    PRIMARY KEY (`phone`) , 
    UNIQUE INDEX `discountCardNumber_UNIQUE` (`discountCardNumber` ASC) , 
    CONSTRAINT `fk_Clients_DiscountCards1` 
    FOREIGN KEY (`discountCardNumber`) 
    REFERENCES `myschema`.`DiscountCards` (`cardNumber`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

CREATE TABLE `myschema`.`OrderStatuses` (
    `statusID` INT NOT NULL AUTO_INCREMENT , 
    `statusTitle` VARCHAR(45) NOT NULL , 
    `statusDescription` VARCHAR(150) NULL , 
    PRIMARY KEY (`statusID`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `myschema`.`WorkstationUsers` (
    `userID` INT NOT NULL AUTO_INCREMENT , 
    `login` VARCHAR(45) NOT NULL , 
    `pass` VARCHAR(45) NOT NULL , 
    `name` VARCHAR(45) NOT NULL , 
    `surname` VARCHAR(45) NOT NULL , 
    `middleName` VARCHAR(45) NULL , 
    PRIMARY KEY (`userID`)) 
ENGINE = InnoDB; 

CREATE TABLE `myschema`.`Orders` (
    `orderID` BIGINT NOT NULL AUTO_INCREMENT , 
    `registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
    `clientPhone` VARCHAR(15) NOT NULL , 
    `shipmentAddress` VARCHAR(150) NOT NULL , 
    `orderStatus` INT NOT NULL , 
    `registrator` INT NOT NULL , 
    PRIMARY KEY (`orderID`) , 
    INDEX `fk_Orders_Clients` (`clientPhone` ASC) , 
    INDEX `fk_Orders_OrderStatuses1` (`orderStatus` ASC) , 
    INDEX `fk_Orders_WorkstationUsers1` (`registrator` ASC) , 
    CONSTRAINT `fk_Orders_Clients` 
    FOREIGN KEY (`clientPhone`) 
    REFERENCES `myschema`.`Clients` (`phone`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_Orders_OrderStatuses1` 
    FOREIGN KEY (`orderStatus`) 
    REFERENCES `myschema`.`OrderStatuses` (`statusID`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_Orders_WorkstationUsers1` 
    FOREIGN KEY (`registrator`) 
    REFERENCES `myschema`.`WorkstationUsers` (`userID`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 

它在失敗最後聲明(CREATE TABLE Orders)。

我已經籤:refferencing表

  • 類型等於
  • 指標對所有列存在
  • 引擎是InnoDB

感謝您的幫助!祝你有美好的一天!

P.S.抱歉可能有重複。我在代碼中找不到任何問題。

+0

表格DiscountCards在哪裏? – 2012-03-30 13:43:57

+0

@AshwinA它存在,但一切都OK了。 – 2012-03-30 13:48:50

回答

1

某些字段被定義爲NOT NULL,但您將'ON DELETE'操作定義爲'SET NULL'。

使這些領域nullabe -

CREATE TABLE `myschema`.`Orders` (
    `orderID` BIGINT NOT NULL AUTO_INCREMENT , 
    `registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
    `clientPhone` VARCHAR(15) NULL, -- NOT NULL , 
    `shipmentAddress` VARCHAR(150) NOT NULL , 
    `orderStatus` INT NULL, -- NOT NULL , 
    `registrator` INT NULL, -- NOT NULL , 
    PRIMARY KEY (`orderID`) , 
    INDEX `fk_Orders_Clients` (`clientPhone` ASC) , 
    INDEX `fk_Orders_OrderStatuses1` (`orderStatus` ASC) , 
    INDEX `fk_Orders_WorkstationUsers1` (`registrator` ASC) , 
    CONSTRAINT `fk_Orders_Clients` 
    FOREIGN KEY (`clientPhone`) 
    REFERENCES `myschema`.`Clients` (`phone`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_Orders_OrderStatuses1` 
    FOREIGN KEY (`orderStatus`) 
    REFERENCES `myschema`.`OrderStatuses` (`statusID`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE, 
    CONSTRAINT `fk_Orders_WorkstationUsers1` 
    FOREIGN KEY (`registrator`) 
    REFERENCES `myschema`.`WorkstationUsers` (`userID`) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE) 
ENGINE = InnoDB; 
+0

謝謝!你拯救了我的一天 – 2012-03-30 13:49:07

0

對我來說,這個問題是通過在每個月底增加

默認字符集= UTF8

解決創建表

問候!