【问题标题】:MySQL InnoDB Create FK errorMySQL InnoDB 创建 FK 错误
【发布时间】:2011-06-19 03:53:11
【问题描述】:

我正在尝试创建一个自引用 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 行的 'REFERENCES Company(company_id)' 附近使用正确的语法

【问题讨论】:

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


    【解决方案1】:

    知道了。

    你得改变

    的定义

    parent_company_id整数(32)

    要匹配company_id除了自增然后使用这个语句

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

    所以基本上记得把 unsigned 放在你作为 FK 使用的列上,这样它就可以匹配引用键的定义

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 2017-06-20
      • 2011-09-29
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多