0

我使用MySQLInnoDB引擎。我仔细检查了列的类型。但是,总有:如何将外键添加到MySQL表?

Error Code: 1215. Cannot add foreign key constraint

我想:

ALTER TABLE `mail`.`boxes` 
    ADD CONSTRAINT FK_id 
    FOREIGN KEY (id) 
    REFERENCES `mail`.`users` (id) 
    ON UPDATE NO ACTION 
    ON DELETE NO ACTION; 

ALTER TABLE `mail`.`boxes` 
    ADD FOREIGN KEY (id) 
    REFERENCES `mail`.`users` (id) 

没有什么工作(((

请帮助,我在做什么错(除了选择MySQL :-))?

回答

0

要检查究竟是什么问题,使用方法:

SHOW ENGINE INNODB STATUS\G

有节“最后的外键的错误”。看看:http://dev.mysql.com/doc/refman/5.0/en/innodb-monitors.html

我的猜测是数据类型od mail.boxes(id)和mail.users(id)是不一样的。 (例如,一个表中的smallint和第二个中的整数)。

数据在您想创建FK可能也可能是问题的表(在你的邮箱ID相同,现有用户的ID?)

+0

我从表中删除所有数据和datat类型的再次检查,并且它们是相同的( – serg

+0

INNODB STATUS写是这样的:不能在参考表中找到一个索引 引用的列显示为表中的第一列或列类型 ,并且引用的表与约束不匹配。 请注意,在使用> = InnoDB-4.1.12创建的表中,ENUM和SET的内部存储类型已更改,旧表 中的这些列不能被新表中的这些列引用。 有关正确的外键定义,请参见http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html 。 – serg

+0

你对mail.users(id)列有任何索引吗?例如。在该列上创建主键应该有所帮助。 – cathulhu