我想用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中触发时,它说:
表的外键约束出错 database / specification_variant_parent_description:FOREIGN KEY (
specification_variant_parent_id
)参考 specification_variant_parent(specification_variant_parent_id)ON DELETE CASCADE)ENGINE = InnoDB:在引用中找不到索引 引用列显示为第一列的表,或 表中的列类型与引用的表不匹配 约束
我的数据库方案有什么问题?
答案 0 :(得分:0)
您的数据类型不匹配。
在第一张表格中
`specification_variant_parent_id` int(11) unsigned NOT NULL AUTO_INCREMEN
您声明的数据类型是unsigned int
在第二个表中,外键是
`specification_variant_parent_id` smallint(5) unsigned NOT NULL
,数据类型是unsigned smallint
使它们都具有相同的数据类型。