Как заставить работать: ошибка FOREIGN KEY при добавлении - PullRequest
1 голос
/ 09 июля 2019

У меня есть две таблицы, books и borrowing requests - я делаю учебный проект для изучения MySQL.Пытаясь связать эти две таблицы, используя FK, и постоянно получаю сообщение об ошибке:

 "SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint")

Помимо документации, я искал практически все связанные с этим темы здесь, на SO, однако безуспешно.Типы одинаковы, столбцы и без знака, один первичный ключ и т. Д. - насколько я понимаю, я соблюдал все положения.Но это не работает!Чего мне не хватает?

Вот две таблицы и запрос на добавление fk:

CREATE TABLE `books` (
  `book_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `book_title` VARCHAR(100) NOT NULL,
  `author_id` INT(11) NOT NULL, 
  `book_condition` INT(5) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=23453 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `borrowing_requests` (
  `request_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `user_id` INT(11) NOT NULL,
  `book_id` INT(11) UNSIGNED NOT NULL,
  `due_date` VARCHAR(55) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=23453 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Запрос FK:

ALTER TABLE `books` ADD CONSTRAINT books_fk FOREIGN KEY (`book_id`) 
REFERENCES `borrowing_requests`(`book_id`) 
ON DELETE NO ACTION ON UPDATE NO ACTION

1 Ответ

2 голосов
/ 09 июля 2019

У вас есть внешний ключ «назад» - запрос на заимствование должен ссылаться на книгу, а не наоборот:

ALTER TABLE `borrowing_requests` ADD CONSTRAINT books_fk FOREIGN KEY (`book_id`) 
REFERENCES `books`(`book_id`) 
ON DELETE NO ACTION ON UPDATE NO ACTION
...