为什么当我尝试创建数据库时出现错误 3734

问题描述 投票:0回答:1

我创建了一个图表并尝试使用正向工程,但收到错误 3734:无法添加外键约束。引用表“user”中缺少约束“fk_order_review_user1”的列“user_id”。

我删除了 2 个选项卡(“order_review”和“favorites”)并成功完成了前向工程师。我该如何解决这个问题?我是 MySQL 的初学者,所以我不明白如何调试这个问题

database diagram

-- 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 database mysql-workbench
1个回答
0
投票

在 MySQL 标题“user”中 - MySQL 内的默认标题,所以我收到错误 3734。我更改了他,但如果需要,请尝试向表发出此请求:

我的项目.user
MyDB.user

(对不起我的英语)

© www.soinside.com 2019 - 2024. All rights reserved.