sql >> Base de Datos >  >> RDS >> Mysql

SQL - código de error 1005 con número de error 121

El error 121 significa que hay un error de restricción de clave externa. Como está usando InnoDB, puede usar SHOW ENGINE INNODB STATUS después de ejecutar la consulta fallida para obtener una explicación en el LATEST FOREIGN KEY ERROR sección. Habiendo ejecutado tu SQL yo mismo, obtengo esto:

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

Básicamente, debe darle a su nombre de restricción prjId un nombre único en la última tabla. Los nombres de claves foráneas/restricciones son globales para una base de datos, por lo que no se pueden reutilizar en diferentes tablas. Solo cambia el último

  CONSTRAINT `prjId`

a

  CONSTRAINT `prjId2`