Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL - código de erro 1005 com número de erro 121


Erro 121 significa que há um erro de restrição de chave estrangeira. Como você está usando o InnoDB, você pode usar SHOW ENGINE INNODB STATUS depois de executar a consulta com falha para obter uma explicação no LATEST FOREIGN KEY ERROR seção. Tendo executado seu SQL eu mesmo, recebo isso:
------------------------
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.

Basicamente, você precisa dar ao seu nome de restrição prjId um nome exclusivo na última tabela. Os nomes de chave de restrição/estrangeira são globais para um banco de dados, portanto, não podem ser reutilizados em tabelas diferentes. Basta alterar o último
  CONSTRAINT `prjId`

para
  CONSTRAINT `prjId2`