MySQL InnoDB Ошибка создания FK - PullRequest
0 голосов
/ 19 июня 2011

Я пытаюсь создать собственный ссылочный FK:

DROP TABLE IF EXISTS `Company`;
CREATE TABLE `Company` (
  `company_id`        INTEGER(32) UNSIGNED AUTO_INCREMENT,
  `parent_company_id` INTEGER(32),
  PRIMARY KEY (`company_id`)
) ENGINE=InnoDB;

ALTER TABLE `Company` 
  ADD FOREIGN KEY `parent_company_id` REFERENCES `Company`(`company_id`);

Я получаю следующую ошибку:

1064 - в синтаксисе SQL возникла ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'ССЫЛКИ Company (company_id)' в строке 1

1 Ответ

0 голосов
/ 19 июня 2011

Понял.

Вы должны изменить определение

parent_company_id INTEGER (32)

Для сопоставления company_id, за исключением автоинкремента, а затем использовать это утверждение

ALTER TABLE `Company` 
  ADD CONSTRAINT fk_parent_company_id FOREIGN KEY (`parent_company_id`) REFERENCES `Company`(`company_id`)

В общем, не забудьте поместить unsigned в столбец, который вы используете как FK, чтобы он соответствовал определению ссылочного ключа

...