2012-03-30 7 views
0

Я моделирование моего дб Шма с помощью MySQL Workbench CE EER модельеру и теперь я застрял с тузды егто 150.Mysql Форвард инженер Errno 150

My 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? –

+0

@AshwinA существует, но все в порядке с ним. –

ответ

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

Спасибо! Ты спас мой день –

0

В моем случае проблема была решена путем добавления

DEFAULT CHARACTER SET = utf8

в конце каждого создать таблицу

привет!

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