[英]SQL Error #1215 - Cannot add foreign key constraint
I have spent a good 3 hours searching for the answer to my problem (on here and google) and I cannot understand why I am getting this error after I try to add the "events" table. 我花了3个小时搜索我的问题的答案(在这里和谷歌),我不明白为什么我在尝试添加“事件”表后收到此错误。
Two tables: 两张桌子:
CREATE TABLE user (
id INT NOT NULL AUTO_INCREMENT,
u_name VARCHAR(32) NOT NULL,
u_pass VARCHAR(32) NOT NULL,
sub_status INT(3) NOT NULL,
f_name VARCHAR(32),
l_name VARCHAR(32),
email VARCHAR(32),
PRIMARY KEY(id, u_name, email)
) ENGINE=InnoDB;
CREATE TABLE events (
u_name VARCHAR(32) NOT NULL,
event_name VARCHAR(32),
event_date VARCHAR(32),
comment VARCHAR(255),
PRIMARY KEY(u_name, event_name),
FOREIGN KEY(u_name) REFERENCES user(u_name)
ON UPDATE CASCADE
ON DELETE CASCADE
) ENGINE=InnoDB;
As far as I can see, there are no spelling errors, u_name is the exact same type between tables and it is a primary key in both tables. 据我所知,没有拼写错误,u_name是表之间完全相同的类型,它是两个表中的主键。
mysql version is 5.6 mysql版本是5.6
Help is much appreciated and I thank you in advance. 非常感谢帮助,我提前感谢你。 Let me know if there is any else I need to include. 如果还有其他我需要包含的内容,请告诉我。
EDIT: Turns out my queries do work, but on a different version of sql/mysql. 编辑:结果我的查询工作,但在不同版本的sql / mysql。 jemz's answer works as well for a different version of sql. jemz的答案适用于不同版本的sql。
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`u_name` VARCHAR(32) NOT NULL,
`u_pass` VARCHAR(32) NOT NULL,
`sub_status` INT(3) NOT NULL,
`f_name` VARCHAR(32) NULL DEFAULT NULL,
`l_name` VARCHAR(32) NULL DEFAULT NULL,
`email` VARCHAR(32) NOT NULL DEFAULT '',
PRIMARY KEY (`id`, `u_name`, `email`),
INDEX `u_name` (`u_name`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
CREATE TABLE `events` (
`u_name` VARCHAR(32) NOT NULL,
`event_name` VARCHAR(32) NOT NULL DEFAULT '',
`event_date` VARCHAR(32) NULL DEFAULT NULL,
`comment` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`u_name`, `event_name`),
CONSTRAINT `FK_events_user` FOREIGN KEY (`u_name`) REFERENCES `user` (`u_name`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.