Mysql 错误:无法添加外键约束

Mysql 错误:无法添加外键约束,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,我正在尝试向表中添加外部约束: ALTER TABLE owners_carparks2users # ADD CONSTRAINT FOREIGN KEY (`agglomeration_id`) REFERENCES `carparks_tmp` (`agglomeration_id`), <- this works fine ADD CONSTRAINT FOREIGN KEY (`carpark_id`) REFERENCES `carparks_tmp` (`carpark

我正在尝试向表中添加外部约束:

ALTER TABLE owners_carparks2users
#  ADD CONSTRAINT FOREIGN KEY (`agglomeration_id`) REFERENCES `carparks_tmp` (`agglomeration_id`), <- this works fine
  ADD CONSTRAINT FOREIGN KEY (`carpark_id`) REFERENCES `carparks_tmp` (`carpark_id`)
详细错误(
显示引擎INNODB状态
):

------------------------最新外键错误 ------------------------2014-05-21 11:40:12 127938000表停车场外键约束错误/#sql-2e5_6a:外键 (
停车场id
)参考
停车场tmp
停车场id
):找不到 引用表中出现引用列的索引 作为表中的第一列或列类型以及引用的 表与约束不匹配。请注意,内部存储类型 在使用>=InnoDB-4.1.12创建的表中更改的枚举和集合的数量,以及 旧表中的这些列不能被新表中的这些列引用 桌子。看见 获取正确的外键定义

还有我的桌子:

CREATE TABLE carparks_tmp (
  `agglomeration_id` int(11) NOT NULL,
  `carpark_id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`agglomeration_id`,`carpark_id`)
);

DROP TABLE IF EXISTS owners_carparks2users;
CREATE TABLE owners_carparks2users (
  `agglomeration_id` int(11) NOT NULL,
  `carpark_id` int(11) NOT NULL,
  `user_id` bigint(20) NOT NULL
);

任何帮助都将被显示。

正如erorr消息所说,您需要将
停车场id
作为
停车场tmp
索引的第一列

因此,您应该添加如下索引:

  CREATE INDEX index_name
            ON carparks_tmp(carpark_id);

然后您就可以创建外键了。

谢谢。我现在不知道外键引用的键需要被索引。
  CREATE INDEX index_name
            ON carparks_tmp(carpark_id);