MYSQL table 不允许多个外键

MYSQL table wont allow multiple foreign keys

我知道这个问题已经被问过一次又一次,我已经尝试了很多次,但不明白为什么我总是出错,但我正在尝试将订单详细信息 table 连接到订单项目、用户和付款 table,但 SQL 即将出现。 (这是一个学校项目)

我已经能够将 table 与两个约束连接起来,但从未与三个约束连接。

#1005 - Can't create table oursmall.order_details (errno: 150 "Foreign key constraint is incorrectly formed")

CREATE TABLE IF NOT EXISTS order_details(
    order_details_id INT(10) NOT NULL AUTO_INCREMENT,
    order_items_id INT(10) NOT NULL,
    users_id INT(10) NOT NULL,
    total DECIMAL(6,2) NOT NULL,
    payment_id INT(10) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(order_details_id),
    CONSTRAINT fk_order FOREIGN KEY(order_items_id) REFERENCES order_items(order_items_id),
    CONSTRAINT fk_users FOREIGN KEY(users_id) REFERENCES users(users_id),
    CONSTRAINT fk_payment FOREIGN KEY(payment_id) REFERENCES users(payment_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE="utf8_unicode_ci";

谢谢!

外键引用的列必须是引用的 table 的键。主键或至少一个辅助唯一键。*

CONSTRAINT fk_payment FOREIGN KEY(payment_id) REFERENCES users(payment_id)

payment_id 真的是 users table 的主键或唯一键吗?如果是的话我会很惊讶。

第二个外键引用users.users_id,对吧?这就是我认为 table.

的主键

* InnoDB 支持 non-standard 特性,允许引用的列是任何索引列,甚至是 non-unique 列。但这不是SQL语言中外键的标准,我不建议这样做。例如,如果外键引用的值可能出现在父 table 的多行中,这意味着什么?哪一行是真正的父行?