当MySQL工作台正向工程我收到以下错误:MySQL不能添加外键约束 - MySQL工作台
Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
SQL Code:
-- -----------------------------------------------------
-- Table `sdosburn_guile`.`Employee`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Employee` (
`EmployeeID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`IsManager` TINYINT(1) NOT NULL,
`PasswordHash` BLOB(256) NOT NULL,
`NameLast` VARCHAR(25) NOT NULL,
`NameFirst` VARCHAR(25) NOT NULL,
`DateofBirth` DATE NOT NULL,
`EmailAddress` VARCHAR(50) NOT NULL,
`PhoneNumber` VARCHAR(13) NOT NULL,
`Gender` TINYINT(1) NULL,
`HireDate` DATE NULL,
`_WarehouseID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`EmployeeID`),
INDEX `fk_Employee_Warehouse1_idx` (`_WarehouseID` ASC),
CONSTRAINT `fk_Employee_Warehouse1`
FOREIGN KEY (`_WarehouseID`)
REFERENCES `sdosburn_guile`.`Warehouse` (`WarehouseID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 10 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
附件是我的数据库信息。我已经检查过数据类型,大小以及我在网上查到的所有内容,请帮助!!!!!
-- MySQL Workbench Forward Engineering
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema sdosburn_guile
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema sdosburn_guile
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `sdosburn_guile` DEFAULT CHARACTER SET utf8 ;
-- -----------------------------------------------------
-- Schema named
-- -----------------------------------------------------
USE `sdosburn_guile` ;
- 表sdosburn_guile
。 Customer
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Customer` (
`CustomerID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`PasswordHash` BLOB(256) NOT NULL,
`NameLast` VARCHAR(25) NULL,
`NameFirst` VARCHAR(25) NULL,
`DateofBirth` DATE NULL,
`EmailAddress` VARCHAR(50) NOT NULL,
`PhoneNumber` VARCHAR(13) NULL,
PRIMARY KEY (`CustomerID`))
ENGINE = InnoDB;
- 表sdosburn_guile
。 Book
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Book` (
`ItemID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Price` DOUBLE NOT NULL,
`Title` VARCHAR(50) NOT NULL,
`Author` VARCHAR(50) NOT NULL,
`Genre` VARCHAR(20) NULL,
`ReleaseDate` VARCHAR(10) NULL,
`Publisher` VARCHAR(50) NULL,
PRIMARY KEY (`ItemID`))
ENGINE = InnoDB;
- 表sdosburn_guile
。 Music
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Music` (
`ItemID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Price` DOUBLE NOT NULL,
`Title` VARCHAR(50) NOT NULL,
`Artist` VARCHAR(50) NOT NULL,
`Genre` VARCHAR(20) NULL,
`ReleaseDate` VARCHAR(10) NULL,
`Record Company` VARCHAR(50) NULL,
PRIMARY KEY (`ItemID`))
ENGINE = InnoDB;
- 表sdosburn_guile
。 Movie
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Movie` (
`ItemID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Price` DOUBLE NOT NULL,
`Title` VARCHAR(50) NOT NULL,
`Genre` VARCHAR(20) NULL,
`ReleaseDate` VARCHAR(10) NULL,
`Actor_1` VARCHAR(50) NULL,
`Actor_2` VARCHAR(50) NULL,
`Actor_3` VARCHAR(50) NULL,
`Director` VARCHAR(50) NULL,
`Production Company` VARCHAR(50) NULL,
PRIMARY KEY (`ItemID`))
ENGINE = InnoDB;
- 表sdosburn_guile
。 Warehouse
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Warehouse` (
`WarehouseID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`PhoneNumber` VARCHAR(13) NOT NULL,
`_ManageID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`WarehouseID`),
INDEX `fk_Warehouse_Employee1_idx` (`_ManageID` ASC),
CONSTRAINT `fk_Warehouse_Employee1`
FOREIGN KEY (`_ManageID`)
REFERENCES `sdosburn_guile`.`Employee` (`EmployeeID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
- 表sdosburn_guile
。 Employee
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Employee` (
`EmployeeID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`IsManager` TINYINT(1) NOT NULL,
`PasswordHash` BLOB(256) NOT NULL,
`NameLast` VARCHAR(25) NOT NULL,
`NameFirst` VARCHAR(25) NOT NULL,
`DateofBirth` DATE NOT NULL,
`EmailAddress` VARCHAR(50) NOT NULL,
`PhoneNumber` VARCHAR(13) NOT NULL,
`Gender` TINYINT(1) NULL,
`HireDate` DATE NULL,
`_WarehouseID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`EmployeeID`),
INDEX `fk_Employee_Warehouse1_idx` (`_WarehouseID` ASC),
CONSTRAINT `fk_Employee_Warehouse1`
FOREIGN KEY (`_WarehouseID`)
REFERENCES `sdosburn_guile`.`Warehouse` (`WarehouseID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
- 表sdosburn_guile
。 Address
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Address` (
`AddressID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Number` VARCHAR(10) NOT NULL,
`Street` VARCHAR(35) NOT NULL,
`State` VARCHAR(2) NOT NULL,
`Secondary` VARCHAR(20) NULL,
`LocalCustomerID` INT NULL,
`LocalEmployeeID` INT NULL,
`LocalWarehouseID` INT NULL,
`Addresscol` VARCHAR(45) NULL,
PRIMARY KEY (`AddressID`),
INDEX `fk_Address_Customer_idx` (`LocalCustomerID` ASC),
INDEX `fk_Address_Employee1_idx` (`LocalEmployeeID` ASC),
INDEX `fk_Address_Warehouse1_idx` (`LocalWarehouseID` ASC),
UNIQUE INDEX `LocalCustomerID_UNIQUE` (`LocalCustomerID` ASC),
UNIQUE INDEX `LocalEmployeeID_UNIQUE` (`LocalEmployeeID` ASC),
UNIQUE INDEX `Addresscol_UNIQUE` (`Addresscol` ASC),
CONSTRAINT `fk_Address_Customer`
FOREIGN KEY (`LocalCustomerID`)
REFERENCES `sdosburn_guile`.`Customer` (`CustomerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Address_Employee1`
FOREIGN KEY (`LocalEmployeeID`)
REFERENCES `sdosburn_guile`.`Employee` (`EmployeeID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Address_Warehouse1`
FOREIGN KEY (`LocalWarehouseID`)
REFERENCES `sdosburn_guile`.`Warehouse` (`WarehouseID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
- 表sdosburn_guile
。 Billing
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`Billing` (
`BillingID` INT NOT NULL AUTO_INCREMENT COMMENT 'Remove datatype and have key be the payment name?',
`_CustomerID` INT NOT NULL,
`PaymentType` TINYINT NOT NULL DEFAULT 0,
`PaymentName` VARCHAR(50) NOT NULL COMMENT 'User\'s name for payment method',
`AccountNumber` VARCHAR(19) NOT NULL COMMENT 'Can be card number or bank account number',
`Routing Number` VARCHAR(9) NULL,
`CVV` VARCHAR(3) NULL,
`_BillingAddressID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`BillingID`),
INDEX `fk_Billing_Customer1_idx` (`_CustomerID` ASC),
UNIQUE INDEX `BillingID_UNIQUE` (`BillingID` ASC),
INDEX `fk_Billing_Address1_idx` (`_BillingAddressID` ASC),
CONSTRAINT `fk_Billing_Customer1`
FOREIGN KEY (`_CustomerID`)
REFERENCES `sdosburn_guile`.`Customer` (`CustomerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Billing_Address1`
FOREIGN KEY (`_BillingAddressID`)
REFERENCES `sdosburn_guile`.`Address` (`AddressID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
- 表sdosburn_guile
。ShoppingCart
CREATE TABLE IF NOT EXISTS `sdosburn_guile`.`ShoppingCart` (
`CartID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`_CustomerID` INT NOT NULL,
INDEX `fk_ShoppingCart_Customer1_idx` (`_CustomerID` ASC),
PRIMARY KEY (`CartID`),
CONSTRAINT `fk_ShoppingCart_Customer1`
FOREIGN KEY (`_CustomerID`)
REFERENCES `sdosburn_guile`.`Customer` (`CustomerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
....
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
一个提示是创建那些独立和父母像第一,然后孩子。这不像你缩小了很多。顺序是非常重要的。先做父母。 – Drew