无法添加外键约束 MySQL Workbench

Cannot add foreign key constraint MySQL Workbench

我在尝试创建 "orders" table 时收到 "Error Code: 1215. Cannot add foreign key constraint"。

credit_cards table:

CREATE TABLE credit_cards (
    customer VARCHAR(30),
    card_no CHAR(16),
    PRIMARY KEY (customer, card_no),
    FOREIGN KEY (customer) REFERENCES customers(username));

订单table:

CREATE TABLE orders (
    order_no INT AUTO_INCREMENT,
    customer VARCHAR(30) NOT NULL,
    date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    credit_card CHAR(16) NOT NULL,
    PRIMARY KEY (order_no),
    FOREIGN KEY (customer)
        REFERENCES customers (username),
    FOREIGN KEY (credit_card)
        REFERENCES credit_cards (card_no));

来自SHOW ENGINE INNODB STATUS的报告说问题是FOREIGN KEY (credit_card) REFERENCES credit_cards(card_no))

我已经阅读了一堆已解决的问题,但仍然无法弄明白。我正在使用 MySQL Workbench。谢谢。

您需要引用所有主键(或唯一键)关系中的键。我会推荐:

CREATE TABLE credit_cards (
    credit_card_id int auto_increment primary key,
    customer VARCHAR(30),
    card_no CHAR(16),
    UNIQUE KEY (customer, card_no),
    FOREIGN KEY (customer) REFERENCES customers(username));
orders table:

CREATE TABLE orders (
    order_no INT AUTO_INCREMENT,
    customer VARCHAR(30) NOT NULL,
    date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    credit_card_id int NOT NULL,
    PRIMARY KEY (order_no),
    FOREIGN KEY (customer)
        REFERENCES customers (username),
    FOREIGN KEY (credit_card_id)
        REFERENCES credit_cards (credit_card_id));