Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL - код на грешка 1005 с номер на грешка 121

Грешка 121 означава, че има грешка при ограничаване на външния ключ. Тъй като използвате InnoDB, можете да използвате SHOW ENGINE INNODB STATUS след изпълнение на неуспешната заявка, за да получите обяснение в LATEST FOREIGN KEY ERROR раздел. След като изпълних вашия SQL лично, получавам това:

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

По принцип трябва да дадете на вашето prjId име на ограничение уникално име в последната таблица. Имената на ограничения/външни ключове са глобални за база данни, така че не могат да се използват повторно в различни таблици. Просто сменете последното

  CONSTRAINT `prjId`

до

  CONSTRAINT `prjId2`


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unicode Encode Error „latin-1“ Кодекът не може да кодира символ „\u2019“

  2. Защита на паролата за MySQL при разработка в Python?

  3. За какво е декларацията на сокета в Ruby on Rails database.yml?

  4. Как да инсталирате MySQL на Ubuntu

  5. Как да коригирате java.sql.SQLException:Колона „id“ не е намерена. грешка в Spring Boot