Chyba 121 znamená, že došlo k chybě omezení cizího klíče. Protože používáte InnoDB, můžete použít SHOW ENGINE INNODB STATUS
po spuštění neúspěšného dotazu, abyste získali vysvětlení v LATEST FOREIGN KEY ERROR
sekce. Když jsem si sám spustil SQL, dostanu toto:
------------------------
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.
V zásadě musíte v poslední tabulce přiřadit název omezení prjId jedinečný název. Názvy omezení/cizího klíče jsou pro databázi globální, takže je nelze znovu použít v různých tabulkách. Stačí změnit poslední
CONSTRAINT `prjId`
do
CONSTRAINT `prjId2`