Kann nicht erstellt eine Tabelle in der Workbench, errno 121
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='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 SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Error is:
Executing SQL script in server
ERROR: Error 1005: Can't create table 'mydb.food_variant' (errno: 121)
Sehe ich keine doppelten Einschränkungen. Wo ist es?
InformationsquelleAutor arts777 | 2012-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wahrscheinlich, weil Sie so genannt haben mindestens eine Einschränkung mit dem gleichen Bezeichner wie eine Spalte:
Sollte verwenden eine andere Kennung für die Einschränkung wie
fk_restaurant
:Und dasselbe in der
food
Tabelle:Sind das die einzigen drei, die ich sehen, aber es könnte anderen, die ich verpasst.
Im Falle jemand hat dieses problem. Ich war immer der errno 121 auch nach dem ändern der constraint-Namen, die über mehrere Tabellen hinweg. Das problem war, dass auch über verschiedene Tabellen, die Sie können nicht den gleichen Namen Einschränkung. Ich war mit 'fk_entryid' in Tabelle1 und Tabelle2 und hatte, Sie zu ändern, um 'fk_table1_entryid' und 'fk_table2_entryid' bzw., damit es funktioniert. Dies geschah mit MySQLWorkbench und MariaDB in Fall, dass Angelegenheiten.
InformationsquelleAutor Michael Berkowski