MySQL 5.0.11 错误代码 #1215 : cannot add foreign key constraint

标签 mysql sql foreign-keys constraints

根据我阅读相关SO答案和官方文档后的理解,我可能会遇到列类型不匹配的情况或没有定义所需的INDEX情况。但是我无法解决我的案子。

下表创建成功

CREATE TABLE `parts` (
`partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part number with revision number',
`status` char(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is live or dead',
`partdef` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part definition',
`makebuy` varchar(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is maked or buyed',
PRIMARY KEY (`partnum_rev`), 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table that part specific data is hold'

下表给出了 MySQL - 错误代码 1215,无法添加外键约束

partnum_revparts 表的主键,所以我不明白我的原因。

你能帮帮我吗?

最好的问候

CREATE TABLE `bom` (
`lcn` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'logistics control number',
`status` char(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is live or dead',
`partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part number with revision number',
`effective_date` date NOT NULL COMMENT 'drawing effective date',
`abolish_date` date DEFAULT NULL COMMENT 'drawing abolish date',
`parent_partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'parent part number with revision number',
`bomlevel` tinyint(3) unsigned NOT NULL COMMENT 'bom level',
`quantity` decimal NOT NULL COMMENT 'quantity',
`quantity_unit` char(2) COLLATE utf8_unicode_ci NOT NULL COMMENT 'quantity unit',
`usage_ratio` decimal DEFAULT NULL COMMENT 'usage ratio',
`mttr` decimal DEFAULT NULL COMMENT 'mean time to repair',
`purchasecost` decimal unsigned DEFAULT NULL COMMENT 'purchasing cost',
`moneyunit` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'purchasing cost monetary unit',
PRIMARY KEY (`lcn`), 
FOREIGN KEY (`partnum_rev`) REFERENCES part(`partnum_rev`) ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table for bill of material'

最佳答案

foreign key 子句是错误的 - 您的表称为 parts(复数!),而不是 part。只需使用正确的表名:

FOREIGN KEY (`partnum_rev`) REFERENCES parts(`partnum_rev`) ON UPDATE CASCADE 

关于MySQL 5.0.11 错误代码 #1215 : cannot add foreign key constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001186/

相关文章:

php - 我可以使用同一个表中的 2 个外键构建 MySQL 数据库表吗?

mysql - SQL 两个左连接仅产生第一个表中的数据

mysql - MySQL安全模式是默认模式吗?

mysql左外连接

sql - Postgres : get average for all values of a column for each distinct from another column

sql - 如何使表的属性成为该表中的外键?

java - hibernate 问题 : Foreign key must have same number of columns as referenced primary key

javascript - 让 jQuery 函数通过 mySQL 查询使用来自外部 php 文件的数据

php - 使用公共(public)值将两个表中的两个数组合并为一个数组

mysql - SQL只显示有增加趋势的条目