簡體   English   中英

無法使用CASEADE上的DELETE設置FOREIGN KEY

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM