пятница, 5 августа 2011 г.

MySQL: При выполнении ALTER TABLE ошибка [Err] 1005 Can't create table...(errno: 121)

Инструментарий: MySQL, Navicat
Описание: Есть две таблицы tbl_category и tbl_user, которые нужно связать по полях  tbl_category.user_id и  tbl_user.id. Для этого выполняем запрос:
ALTER TABLE tbl_category ADD CONSTRAINT fk_category_user FOREIGN KEY (user_id) REFERENCES tbl_user (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
Результат: При выполнении запроса в Navicat получаем сообщение об ошибке:
[Err] 1005 - Can't create table 'ibox.#sql-17d8_1' (errno: 121)

Решение: Сравнил поля двух таблиц, в обоих таблицах поля int(11), но все дело в значении поля -  unsigned. В таблице  tbl_user.id (unsigned), а  tbl_category.user_id  unsigned не установлено. После установки полю tbl_category.user_id - unsigned все заработало.

Автор:

Комментариев нет: