Как добавить внешний ключ в таблицу 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 ответа
Если таблица содержит данные, то вы не можете добавить внешний ключ, вы удаляете объект таблицы и воссоздаете использование ссылки ниже для того же
Чтобы проверить, в чем именно проблема, используйте:
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, могут также быть проблемой (идентификаторы вашего почтового ящика совпадают с идентификаторами существующих пользователей?)