Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL - Fehlercode 1005 mit Fehlernummer 121

Fehler 121 bedeutet, dass ein Fremdschlüsseleinschränkungsfehler vorliegt. Da Sie InnoDB verwenden, können Sie SHOW ENGINE INNODB STATUS verwenden nachdem Sie die fehlgeschlagene Abfrage ausgeführt haben, um eine Erklärung im LATEST FOREIGN KEY ERROR zu erhalten Sektion. Nachdem ich Ihr SQL selbst ausgeführt habe, bekomme ich Folgendes:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
101210 14:55:50 Error in foreign key constraint creation for table `regula`.`Reservation`.
A foreign key constraint of name `regula`.`prjId`
already exists. (Note that internally InnoDB adds 'databasename'
in front of the user-defined constraint name.)
Note that InnoDB's FOREIGN KEY system tables store
constraint names as case-insensitive, with the
MySQL standard latin1_swedish_ci collation. If you
create tables or databases whose names differ only in
the character case, then collisions in constraint
names can occur. Workaround: name your constraints
explicitly with unique names.

Grundsätzlich müssen Sie Ihrem prjId-Einschränkungsnamen in der letzten Tabelle einen eindeutigen Namen geben. Beschränkungs-/Fremdschlüsselnamen gelten global für eine Datenbank, sodass sie nicht in verschiedenen Tabellen wiederverwendet werden können. Ändern Sie einfach das letzte

  CONSTRAINT `prjId`

zu

  CONSTRAINT `prjId2`