【问题标题】:Can not set FOREIGN KEY with DELETE ON CASCADE无法使用 DELETE ON CASCADE 设置 FOREIGN KEY
【发布时间】:2016-02-08 23:48:47
【问题描述】:

我想用外键删除引用数据。

这是我的两个数据表:

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 中触发它时,它会说:

表外键约束错误 数据库/规范_variant_parent_description:外键 (specification_variant_parent_id) 参考资料 规格变体父(规格变体父ID)ON DELETE CASCADE ) ENGINE=InnoDB: 在引用的索引中找不到索引 引用的列显示为第一列的表,或 表中的列类型和引用的表不匹配 约束。

我的数据库方案有什么问题?

【问题讨论】:

    标签: mysql foreign-keys


    【解决方案1】:

    您的数据类型不匹配。

    在您拥有的第一个表中

    `specification_variant_parent_id` int(11) unsigned NOT NULL AUTO_INCREMEN
    

    你声明的数据类型是一个无符号整数

    在第二个表中,外键是

    `specification_variant_parent_id` smallint(5) unsigned NOT NULL
    

    数据类型是无符号小整数

    使它们具有相同的数据类型。

    【讨论】:

    • 有时小事会有所作为。非常感谢您的帮助。下次我会检查的更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多