MySQL InnoDB创建FK错误

时间:2011-06-19 03:53:11

标签: mysql sql foreign-keys innodb mysql-error-1064

我正在尝试创建一个自我引用的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服务器版本对应的手册,以便在第1行的“参考Companycompany_id)'附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

知道了。

你必须改变

的定义

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`)

所以基本上记得把无符号放在你用作FK的列上,这样就可以匹配引用键的定义了