Как добавить внешний ключ в таблицу MySQL?

Я использую MySQL с InnoDB двигатель. Я дважды проверил тип столбцов. Но всегда есть:

Error Code: 1215. Cannot add foreign key constraint

Я старался:

ALTER TABLE `mail`.`boxes`  
    ADD CONSTRAINT FK_id 
    FOREIGN KEY (id) 
    REFERENCES `mail`.`users` (id)
    ON UPDATE NO ACTION 
    ON DELETE NO ACTION; 

а также

ALTER TABLE `mail`.`boxes` 
  ADD FOREIGN KEY (id)
  REFERENCES `mail`.`users` (id)

Ничего не работает (((

Пожалуйста, помогите, что я делаю не так (кроме выбора MySQL:-))?

2 ответа

Решение

Если таблица содержит данные, то вы не можете добавить внешний ключ, вы удаляете объект таблицы и воссоздаете использование ссылки ниже для того же

Основы иностранных ключей в MySQL?

Чтобы проверить, в чем именно проблема, используйте:

SHOW ENGINE INNODB STATUS\G

Есть раздел "Последняя ошибка внешнего ключа". Посмотрите на: http://dev.mysql.com/doc/refman/5.0/en/innodb-monitors.html

Я предполагаю, что тип данных od mail.boxes (id) и mail.users (id) не совпадает. (Например, smallint в одной таблице и integer во второй).

Данные в таблице, для которой вы пытаетесь создать FK, могут также быть проблемой (идентификаторы вашего почтового ящика совпадают с идентификаторами существующих пользователей?)

Другие вопросы по тегам