mysql - 如何解决 MySQL 错误,因为错误 1215,无法添加外键约束?

标签 mysql sql foreign-keys

这是我的第一张 table 。

CREATE TABLE `raw_orders` (
`row_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`order_id` VARCHAR(45) COLLATE utf8mb4_unicode_ci NOT NULL,
`order_revenue` FLOAT NOT NULL,
PRIMARY KEY(`row_id`),
KEY(`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

这是我的第二张 table

CREATE TABLE `formatted_orders` (
`order_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`client_order_id` VARCHAR(50) COLLATE utf8mb4_general_ci NOT NULL,
`order_revenue` FLOAT NOT NULL,
PRIMARY KEY(`order_id`),
KEY(`client_order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我正在尝试使用此方法在 formatted_orders 中添加外键,将其链接到 raw_orders

ALTER TABLE formatted_orders 
ADD FOREIGN KEY (client_order_id) REFERENCES raw_orders(order_id);

但我收到此错误

ERROR (HY000): Cannot add foreign key constraint

最佳答案

您可以简单地在表 formatted_orders 中添加外键,如下所示:

CREATE TABLE `formatted_orders` (
`order_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`client_order_id` VARCHAR(50) COLLATE utf8mb4_general_ci NOT NULL,
`order_revenue` FLOAT NOT NULL,
PRIMARY KEY(`order_id`),
FOREIGN KEY (`client_order`) REFERENCES raw_orders(`order_id`)
)

关于mysql - 如何解决 MySQL 错误,因为错误 1215,无法添加外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812074/

相关文章:

php - MySQL查询错误(使用php)

mysql - 如何从相距 2 度关系的表中求和交易金额

mysql - 考虑到目前为止已删除的每周计数

sql - 如何扩展sql表?

sql - 选择中的自动排序

sql - 我应该使用 information_schema.referential_constraints 还是 sys.foreign_keys 来检查 key 的存在?

mysql - 基于两个条件的 SQL 中的 ALTER 和 UPDATE 表

mysql - 以 "0"为值的 SQL 列

Oracle & 引用 ALL_USERS(USERNAME)

sql - 由具有不同 PK 的其他表引用的表