sql >> Database >  >> RDS >> Mysql

SQL - foutcode 1005 met foutnummer 121

Fout 121 betekent dat er een externe sleutelbeperkingsfout is. Aangezien u InnoDB gebruikt, kunt u SHOW ENGINE INNODB STATUS gebruiken na het uitvoeren van de mislukte query om een ​​uitleg te krijgen in de LATEST FOREIGN KEY ERROR sectie. Nadat ik je SQL zelf heb uitgevoerd, krijg ik dit:

------------------------
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.

Kortom, u moet uw prjId-beperkingsnaam een ​​unieke naam geven in de laatste tabel. Namen van beperkingen/vreemde sleutels zijn globaal voor een database, dus ze kunnen niet opnieuw worden gebruikt in verschillende tabellen. Verander gewoon de laatste

  CONSTRAINT `prjId`

naar

  CONSTRAINT `prjId2`


  1. 2 manieren om in Oracle naar hoofdletters te converteren

  2. een limiet van het aantal SQL Server-verbindingen?

  3. SQLite - Een database maken

  4. Overtreding van de PRIMARY KEY-beperking