[英]Can not set FOREIGN KEY with DELETE ON CASCADE
我想使用FOREIGN KEY删除引用数据。
这是我的两个数据表:
CREATE TABLE `specification_variant_parent` (
`specification_variant_parent_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`sort_order` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`specification_variant_parent_id`)
) ENGINE=InnoDB;
CREATE TABLE `specification_variant_parent_description` (
`specification_variant_parent_id` smallint(5) unsigned NOT NULL,
`language_id` tinyint(3) unsigned NOT NULL,
`name` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`specification_variant_parent_id`,`language_id`),
KEY (`specification_variant_parent_id`)
REFERENCES specification_variant_parent (specification_variant_parent_id) ON DELETE CASCADE
) ENGINE=InnoDB;
当我在phpMyAdmin中启动它时,它说:
表数据库/ specification_variant_parent_description的外键约束中的错误:FOREIGN KEY(
specification_variant_parent_id
)REFERENCES specification_variant_parent(specification_variant_parent_id)ON DELETE CASCADE)ENGINE = InnoDB:无法在引用表中找到索引,其中引用列作为第一列,或者该表和被引用表中的约束不匹配。
我的数据库方案有什么问题?
您的数据类型不匹配。
在第一个表中
`specification_variant_parent_id` int(11) unsigned NOT NULL AUTO_INCREMEN
您声明的数据类型是无符号的int
在第二个表中,外键是
`specification_variant_parent_id` smallint(5) unsigned NOT NULL
并且数据类型是无符号smallint
使它们都具有相同的数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.