10
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';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`restaurants`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`restaurants` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(128) NOT NULL ,
`description` VARCHAR(1024) NOT NULL ,
`address` VARCHAR(1024) NOT NULL ,
`phone` VARCHAR(16) NOT NULL ,
`url` VARCHAR(128) NOT NULL ,
`min_order` INT NOT NULL ,
`food_types` SET('pizza', 'sushi', 'osetian_pie') NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `name_UNIQUE` (`name` ASC) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`regions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`regions` (
`id` INT NOT NULL AUTO_INCREMENT ,
`restaurant` INT NOT NULL ,
`name` VARCHAR(128) NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `restaurant_idx` (`restaurant` ASC) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,
CONSTRAINT `restaurant`
FOREIGN KEY (`restaurant`)
REFERENCES `mydb`.`restaurants` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`food`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`food` (
`id` INT NOT NULL ,
`type` ENUM('pizza', 'sushi', 'osetian_pie') NOT NULL ,
`name` VARCHAR(45) NOT NULL ,
`ingredients` VARCHAR(256) NULL ,
`image` VARCHAR(256) NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`food_variant`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`food_variant` (
`id` INT NOT NULL AUTO_INCREMENT ,
`size` VARCHAR(16) NOT NULL ,
`weight` VARCHAR(16) NOT NULL ,
`price` INT NOT NULL ,
`food` INT NOT NULL ,
`restaurant` INT NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,
INDEX `food_idx` (`food` ASC) ,
INDEX `restaurant_idx` (`restaurant` ASC) ,
CONSTRAINT `food`
FOREIGN KEY (`food`)
REFERENCES `mydb`.`food` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `restaurant`
FOREIGN KEY (`restaurant`)
REFERENCES `mydb`.`restaurants` (`id`)
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;
Error is:
Executing SQL script in server
ERROR: Error 1005: Can't create table 'mydb.food_variant' (errno: 121)
Tôi không thấy có ràng buộc trùng lặp. Nó đâu rồi?Không thể tạo bảng trong Workbench, errno 121
Cảm ơn, điều này phù hợp với tôi! – arts777
Trong trường hợp ai đó truy cập vấn đề này. Tôi đã nhận được errno 121 ngay cả sau khi thay đổi tên ràng buộc trên nhiều bảng. Vấn đề là ngay cả trên các bảng khác nhau, bạn không thể có cùng một tên ràng buộc. Tôi đã sử dụng 'fk_entryid' trong table1 và table2 và phải thay đổi chúng thành 'fk_table1_entryid' và 'fk_table2_entryid' tương ứng để làm cho nó hoạt động. Điều này đã xảy ra với MySQLWorkbench và MariaDB trong trường hợp có vấn đề. –