[英]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.