mysql workbench код ошибки 1215: не удается добавить ограничение внешнего ключа

#mysql #sql

#mysql #sql

Вопрос:

Я уверен, что следил за ответами из других сообщений, но мой код по-прежнему неверен. Я не уверен, как добавить внешние ключи в мою таблицу. Я также следовал инструкциям, приведенным на веб-сайте учебника.

 DROP TABLE IF EXISTS `Spatuala` ;

CREATE TABLE IF NOT EXISTS `Spatuala`(
    `idSpatula` INT NOT NULL,
    `ProductName` VARCHAR(50) NULL,
    `Type` ENUM('Food', 'Drugs', 'Paints', 'Plaster') NOT NULL,
    `Size` VARCHAR(50),
    `Colour` VARCHAR(50),
    `Price` DECIMAL(10,2),
    `QuantityInStock` INT NOT NULL,
    PRIMARY KEY (`idSpatula`))
ENGINE = InnoDB;

DROP TABLE IF EXISTS `Order`;

CREATE TABLE IF NOT EXISTS `Order`(
    `idOrder` INT NOT NULL,
    `RequestedTime` DATETIME NOT NULL,
    `ResponsibleStaffMember` VARCHAR(100),
    `CustomerDetails` VARCHAR(300),
    PRIMARY KEY (`idOrder`))
ENGINE = InnoDB;

DROP TABLE IF EXISTS `OrderLineItem`;

CREATE TABLE IF NOT EXISTS `OrderLineItem`(
    `idSpatula` INT NOT NULL,
    `idOrder` INT NOT NULL,
    `Quantity` INT NOT NULL,
    FOREIGN KEY (`idSpatula`)
      REFERENCES `Spatula` (`idSpatula`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
    FOREIGN KEY (`idOrder`)
      REFERENCES `Order` (`idOrder`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION)
ENGINE = InnoDB;
  

Ответ №1:

опечатка в имени первой таблицы и в имени последней таблицы.

работает ниже.

 CREATE TABLE IF NOT EXISTS `Spatula`(
    `idSpatula` INT NOT NULL,
    `ProductName` VARCHAR(50) NULL,
    `Type` ENUM('Food', 'Drugs', 'Paints', 'Plaster') NOT NULL,
    `Size` VARCHAR(50),
    `Colour` VARCHAR(50),
    `Price` DECIMAL(10,2),
    `QuantityInStock` INT NOT NULL,
    PRIMARY KEY (`idSpatula`))
ENGINE = InnoDB;

DROP TABLE IF EXISTS `Order`;

CREATE TABLE IF NOT EXISTS `Order`(
    `idOrder` INT NOT NULL,
    `RequestedTime` DATETIME NOT NULL,
    `ResponsibleStaffMember` VARCHAR(100),
    `CustomerDetails` VARCHAR(300),
    PRIMARY KEY (`idOrder`))
ENGINE = InnoDB;

DROP TABLE IF EXISTS `OrderLineItem`;

CREATE TABLE IF NOT EXISTS `OrderLineItem`(
    `idSpatula` INT NOT NULL,
    `idOrder` INT NOT NULL,
    `Quantity` INT NOT NULL,
    FOREIGN KEY (`idSpatula`)
      REFERENCES `Spatula` (`idSpatula`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
    FOREIGN KEY (`idOrder`)
      REFERENCES `Order` (`idOrder`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
)ENGINE = InnoDB;
  

Комментарии:

1. В идеале вы бы просто удалили этот вопрос, поскольку позже он никому не поможет. Спасибо.