Błąd 121 oznacza, że wystąpił błąd ograniczenia klucza obcego. Ponieważ używasz InnoDB, możesz użyć SHOW ENGINE INNODB STATUS
po uruchomieniu nieudanego zapytania, aby uzyskać wyjaśnienie w LATEST FOREIGN KEY ERROR
Sekcja. Po samodzielnym uruchomieniu twojego SQL, otrzymuję to:
------------------------
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.
Zasadniczo musisz nadać swojej nazwie ograniczenia prjId unikalną nazwę w ostatniej tabeli. Nazwy ograniczeń/kluczy obcych są globalne dla bazy danych, więc nie mogą być ponownie użyte w różnych tabelach. Po prostu zmień ostatni
CONSTRAINT `prjId`
do
CONSTRAINT `prjId2`