我看到了关于这个错误的多个问题,但我无法解决这个问题,我需要帮助。因此,我的表(显示错误)具有以下结构:
CREATE TABLE IF NOT EXISTS `services_providers` (
`GUID_users` char(36) NOT NULL,
`GUID_services` char(36) NOT NULL,
`GUID` char(36) NOT NULL,
`lastUpdated` varchar(36),
PRIMARY KEY (`GUID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;我将每条记录的GUID设置为PK,FK设置为GUID_users和GUID_services。
这个查询设置了FK:
ALTER TABLE `services_providers`
ADD CONSTRAINT `services_providers_ibfk_1` FOREIGN KEY (`GUID_users`) REFERENCES `users` (`GUID`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `services_providers_ibfk_2` FOREIGN KEY (`GUID_services`) REFERENCES `services` (`GUID`) ON DELETE CASCADE ON UPDATE CASCADE;用户-结构
CREATE TABLE IF NOT EXISTS `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`GUID` char(36) NOT NULL,
`first_name` varchar(256) DEFAULT NULL,
`last_name` varchar(512) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_roles` (`id_roles`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8;服务-结构
CREATE TABLE IF NOT EXISTS `services` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`GUID` char(36) NOT NULL,
`name` varchar(256) DEFAULT NULL,
`duration` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_service_categories` (`id_service_categories`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;现在,当我执行上面提到的更改时,我得到:
1215 -无法添加外键约束
我只想以FK的形式添加表users和services中每条记录的GUID,并将字段GUID作为PK。
为什么要搞这个?
发布于 2015-12-29 16:11:14
通常将外键约束添加到另一个表的主键。主键是id,而不是GUID。我建议您将这些列用于services_providers。
如果坚持使用GUID,那么将它们声明为unique。
https://stackoverflow.com/questions/34514712
复制相似问题