我创建了一个图表并尝试使用正向工程,但收到错误 3734:无法添加外键约束。引用表“user”中缺少约束“fk_order_review_user1”的列“user_id”。
我删除了 2 个选项卡(“order_review”和“favorites”)并成功完成了前向工程师。我该如何解决这个问题?我是 MySQL 的初学者,所以我不明白如何调试这个问题
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`product` (
`product_id` INT NOT NULL AUTO_INCREMENT,
`product_name` VARCHAR(45) NULL,
`product_description` VARCHAR(45) NULL,
`product_category` VARCHAR(45) NULL,
`product_subcategory` VARCHAR(45) NULL,
`product_returnable` TINYINT(1) NULL,
`product_image` VARCHAR(45) NULL,
`product_guaranteePeriod` VARCHAR(45) NULL,
`product_availabity` VARCHAR(45) NULL,
`product_price` INT NULL,
PRIMARY KEY (`product_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`user` (
`user_id` INT NOT NULL,
`user_login` VARCHAR(45) NULL,
`user_password` VARCHAR(45) NULL,
`user_eMail` VARCHAR(45) NULL,
`user_fullName` VARCHAR(45) NULL,
`user_sex` VARCHAR(45) NULL,
`user_registryDate` DATE NULL,
`user_phone` VARCHAR(45) NULL,
`user_birthDate` DATE NULL,
PRIMARY KEY (`user_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`order`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`order` (
`order_id` INT NOT NULL AUTO_INCREMENT,
`order_recive-time` DATETIME NULL,
`order_price` INT NULL,
`order_paymentMethod` VARCHAR(45) NULL,
`order_reciveMethod` VARCHAR(45) NULL,
`order_status` VARCHAR(45) NULL,
`order_deliveryPrice` INT NULL,
`order_deliveryAddress` VARCHAR(45) NULL,
`order_isPaid` TINYINT(1) NULL,
`user_user_id` INT NOT NULL,
PRIMARY KEY (`order_id`, `user_user_id`),
INDEX `fk_order_user1_idx` (`user_user_id` ASC) VISIBLE,
CONSTRAINT `fk_order_user1`
FOREIGN KEY (`user_user_id`)
REFERENCES `mydb`.`user` (`user_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`order_products`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`order_products` (
`product_product_id` INT NOT NULL,
`order_productsAmount` INT NULL,
`order_products_priceAtTimePurchase` INT NULL,
`order_order_id` INT NOT NULL,
INDEX `fk_order_products_product_idx` (`product_product_id` ASC) VISIBLE,
PRIMARY KEY (`order_order_id`),
CONSTRAINT `fk_order_products_product`
FOREIGN KEY (`product_product_id`)
REFERENCES `mydb`.`product` (`product_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_order_products_order1`
FOREIGN KEY (`order_order_id`)
REFERENCES `mydb`.`order` (`order_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`product_review`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`product_review` (
`pg_id` INT NOT NULL AUTO_INCREMENT,
`pg_grade` INT NULL,
`pg_review` VARCHAR(45) NULL,
`product_product_id` INT NOT NULL,
`user_user_id` INT NOT NULL,
PRIMARY KEY (`pg_id`, `user_user_id`),
INDEX `fk_product_review_product1_idx` (`product_product_id` ASC) VISIBLE,
INDEX `fk_product_review_user1_idx` (`user_user_id` ASC) VISIBLE,
CONSTRAINT `fk_product_review_product1`
FOREIGN KEY (`product_product_id`)
REFERENCES `mydb`.`product` (`product_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_product_review_user1`
FOREIGN KEY (`user_user_id`)
REFERENCES `mydb`.`user` (`user_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`order_review`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`order_review` (
`or_id` INT NOT NULL,
`or_grade` INT NULL,
`or_review` VARCHAR(45) NULL,
`order_order_id` INT NOT NULL,
`user_user_id` INT NOT NULL,
PRIMARY KEY (`or_id`, `user_user_id`),
INDEX `fk_order_review_order1_idx` (`order_order_id` ASC) VISIBLE,
INDEX `fk_order_review_user1_idx` (`user_user_id` ASC) VISIBLE,
CONSTRAINT `fk_order_review_order1`
FOREIGN KEY (`order_order_id`)
REFERENCES `mydb`.`order` (`order_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_order_review_user1`
FOREIGN KEY (`user_user_id`)
REFERENCES `mydb`.`user` (`user_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`administrator`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`administrator` (
`admin_id` INT NOT NULL,
`admin_login` VARCHAR(45) NULL,
`admin_password` VARCHAR(45) NULL,
PRIMARY KEY (`admin_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`favorites`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`favorites` (
`fav_id` INT NOT NULL,
`product_product_id` INT NOT NULL,
`user_user_id` INT NOT NULL,
PRIMARY KEY (`fav_id`, `user_user_id`),
INDEX `fk_Favorites_product1_idx` (`product_product_id` ASC) VISIBLE,
INDEX `fk_Favorites_user1_idx` (`user_user_id` ASC) VISIBLE,
CONSTRAINT `fk_Favorites_product1`
FOREIGN KEY (`product_product_id`)
REFERENCES `mydb`.`product` (`product_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Favorites_user1`
FOREIGN KEY (`user_user_id`)
REFERENCES `mydb`.`user` (`user_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`spec`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`spec` (
`spec_id` INT NOT NULL,
`spec_description` JSON NULL,
`product_product_id` INT NOT NULL,
PRIMARY KEY (`spec_id`, `product_product_id`),
INDEX `fk_Spec_product1_idx` (`product_product_id` ASC) VISIBLE,
CONSTRAINT `fk_Spec_product1`
FOREIGN KEY (`product_product_id`)
REFERENCES `mydb`.`product` (`product_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
在 MySQL 标题“user”中 - MySQL 内的默认标题,所以我收到错误 3734。我更改了他,但如果需要,请尝试向表发出此请求:
我的项目.user
MyDB.user
(对不起我的英语)