Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL - code d'erreur 1005 avec le numéro d'erreur 121

L'erreur 121 signifie qu'il y a une erreur de contrainte de clé étrangère. Puisque vous utilisez InnoDB, vous pouvez utiliser SHOW ENGINE INNODB STATUS après avoir exécuté la requête ayant échoué pour obtenir une explication dans la LATEST FOREIGN KEY ERROR section. Après avoir exécuté votre SQL moi-même, j'obtiens ceci :

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

Fondamentalement, vous devez donner à votre nom de contrainte prjId un nom unique dans la dernière table. Les noms de contrainte/clé étrangère sont globaux pour une base de données, ils ne peuvent donc pas être réutilisés dans différentes tables. Changez juste le dernier

  CONSTRAINT `prjId`

à

  CONSTRAINT `prjId2`