SQL-Fehler errno: 121

79
CREATE TABLE `users` (
  `UID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `username` VARCHAR(45) NOT NULL ,
  `password` VARCHAR(100) NULL ,
  `name` VARCHAR(100) NULL ,
  `gender` BIT NULL ,
  `email` VARCHAR(255) NULL ,
  `phone` VARCHAR(30) NOT NULL ,
  `verified` BIT NOT NULL DEFAULT 0 ,
  `time_zone` INT NULL ,
  `time_register` DATETIME NULL ,
  `time_active` DATETIME NULL ,
  PRIMARY KEY (`UID`) ,
  UNIQUE INDEX `username_UNIQUE` (`username` ASC) ,
  INDEX `verified_INDEX` (`verified` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `companies`
-- -----------------------------------------------------
CREATE TABLE `companies` (
  `CID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NOT NULL ,
  `address` VARCHAR(100) NULL ,
  `email` VARCHAR(255) NULL ,
  `phone` VARCHAR(30) NULL ,
  `link` TEXT NULL ,
  `image_small` TEXT NULL ,
  `image_large` TEXT NULL ,
  `yahoo` VARCHAR(100) NULL ,
  `linkin` VARCHAR(100) NULL ,
  `twitter` VARCHAR(20) NULL ,
  `description` TEXT NULL ,
  `shoutout` VARCHAR(140) NULL ,
  `verified` BIT NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`CID`) ,
  INDEX `name_INDEX` (`name` ASC) ,
  INDEX `verified_INDEX` (`verified` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------
-- Table `products`
-- -----------------------------------------------------
CREATE TABLE `products` (
  `PID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `CID` INT UNSIGNED NOT NULL ,
  `name` VARCHAR(100) NULL ,
  `description` TEXT NULL ,
  `image_small` TEXT NULL ,
  `image_large` TEXT NULL ,
  `tag` VARCHAR(45) NULL ,
  `price` DECIMAL(11,2) NULL ,
  PRIMARY KEY (`PID`) ,
  INDEX `tag_INDEX` (`tag` ASC) ,
  INDEX `company.cid_FK` (`CID` ASC) ,
  CONSTRAINT `company.cid_FK`
    FOREIGN KEY (`CID` )
    REFERENCES `companies` (`CID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------
-- Table `users_companies`
-- -----------------------------------------------------
CREATE TABLE `users_companies` (
  `UID` INT UNSIGNED NOT NULL ,
  `CID` INT UNSIGNED NOT NULL ,
  `role` INT UNSIGNED NULL ,
  PRIMARY KEY (`CID`, `UID`) ,
  INDEX `users.uid_FK` (`UID` ASC) ,
  INDEX `company.cid_FK` (`CID` ASC) ,
  CONSTRAINT `users.uid_FK`
    FOREIGN KEY (`UID` )
    REFERENCES `users` (`UID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `company.cid_FK`
    FOREIGN KEY (`CID` )
    REFERENCES `companies` (`CID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

Ich habe einen Fehler bekommen

#1005 - Can't create table 'wew.users_companies' (errno: 121) (<a href="server_engines.php?engine=InnoDB&amp;page=Status&amp;token=3f35afdea97dd11f6b4ec1b669816738">Details...</a>) 

Kann mir jemand sagen, welches das Problem ist?

Ilmari Karonen
quelle

Antworten:

146

Sie haben zwei Einschränkungen aufgerufen company.cid_FK. Benennen Sie einen um.

Andomar
quelle
8
Warum MySQL Workbench dies nicht überprüft, ist mir ein Rätsel. :(
eaj
48

Für solche Fehler finden Sie weitere Informationen unter 'perror'. dh

shell $ perror 121

MySQL-Fehlercode 121: Doppelter Schlüssel beim Schreiben oder Aktualisieren
Win32-Fehlercode 121: Das Zeitlimit für das Semaphor ist abgelaufen.

Morgan Tocker
quelle
4
Es sei denn, Sie befinden sich auf einem Windows-Computer. :-(
Lawrence Dol
-1

Ich habe den gleichen Fehler MySQL-Fehlercode 121: Doppelter Schlüssel beim Schreiben oder Aktualisieren.

Ich habe zwar die Tabelle aus meiner Datenbank gelöscht, um sie neu zu erstellen, aber ich konnte es nicht, also habe ich die Tabelle noch mit anderen Einschränkungen neu erstellt.

Ich fand, dass die alte Einschränkung immer noch da ist.

user13555536
quelle
2
Ist das eine Lösung oder sagen Sie, dass Sie die gleiche Situation haben?
Scratte