首先,我已经阅读了关于这种错误类型的所有StackOverflow问题,但我不明白为什么会出现此错误。 我有一个meetings
表:错误1215:无法添加外键约束。字段具有相同的类型
CREATE TABLE `meetings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`description` text,
`city` varchar(255) DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`owner` varchar(128) NOT NULL,
`is_private` tinyint(1) DEFAULT NULL,
`priority` int(11) DEFAULT NULL,
`accepted_count` int(11) DEFAULT NULL,
`creation_time` datetime DEFAULT CURRENT_TIMESTAMP,
`main_pic` text,
PRIMARY KEY (`id`),
KEY `user_id_idx` (`owner`),
KEY `city_fk_idx` (`city`),
KEY `weight_idx` (`priority`),
CONSTRAINT `city_fk` FOREIGN KEY (`city`) REFERENCES `cities` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `user_id` FOREIGN KEY (`owner`) REFERENCES `users` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `weight` FOREIGN KEY (`priority`) REFERENCES `priorities` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
我有一个meeting_pictures
表以及
CREATE TABLE `meeting_pictures` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`path` text NOT NULL,
`meeting_id` int(11) NOT NULL,
`user_id` varchar(128) NOT NULL,
PRIMARY KEY (`id`,`meeting_id`),
KEY `user_id_idx` (`user_id`),
CONSTRAINT `user_id_fkk` FOREIGN KEY (`user_id`) REFERENCES `users` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
这就是我尝试添加新的FK:
ALTER TABLE `tts`.`meetings`
ADD CONSTRAINT `meeting_pic_fk1`
FOREIGN KEY (`id`)
REFERENCES `tts`.`meeting_pictures` (`meeting_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
每当我有这样的: “错误1215:不能添加外键约束”。为什么会这样?两列的类型相同。我怎样才能添加这样的FK?
由于
不,你还没有读完。这是一个常见问题。谷歌'MySQL更多的错误信息'与&没有'外键'。或者用“ - ”相同类型“google”等错误信息。另外,请阅读并在[mcve]上采取行动,否则您将得到的是猜测,不应该发布 - 此评论应该。阅读MySQL文档中的FK提及。它会说FK引用了一个声明的PK或UNIQUE NOT NULL。总是谷歌许多清晰,简洁,具体的问题/问题/ desiderata措辞。如果您找不到答案,请使用一个作为标题并勾勒您的搜索。 (难道真的是你第一个得到这个错误?) – philipxy
FK表示表和列列表中的值出现在引用的表和列列表中的其他地方。你想在别处出现什么样的价值观? – philipxy