Mysql
 sql >> Database >  >> RDS >> Mysql

SQL - codice di errore 1005 con numero di errore 121

L'errore 121 indica che è presente un errore di vincolo di chiave esterna. Dato che stai usando InnoDB, puoi usare SHOW ENGINE INNODB STATUS dopo aver eseguito la query non riuscita per ottenere una spiegazione in LATEST FOREIGN KEY ERROR sezione. Dopo aver eseguito personalmente il tuo SQL, ottengo questo:

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

Fondamentalmente, è necessario assegnare al nome del vincolo prjId un nome univoco nell'ultima tabella. I nomi delle chiavi di vincolo/estranee sono globali per un database, quindi non possono essere riutilizzati in tabelle diverse. Basta cambiare l'ultimo

  CONSTRAINT `prjId`

a

  CONSTRAINT `prjId2`