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