MySQL: Schlüsselreferenz und Tabellenreferenz stimmen nicht überein
P粉798010441
P粉798010441 2023-07-18 15:17:02
0
1
633

Fehlermeldung:

SQLSTATE[42000]: Syntax error or access violation: 1239 Incorrect foreign key definition for 'fk.faq.product_id': Key reference and table reference don't match

Produktliste:

CREATE TABLE `product` (
    `id` BINARY(16) NOT NULL,
    `version_id` BINARY(16) NOT NULL,
    `created_at` DATETIME(3) NOT NULL,
    `updated_at` DATETIME(3) NULL,
    PRIMARY KEY (`id`,`version_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

FAQ:

CREATE TABLE `faq` (
    `id` BINARY(16) NOT NULL,
    `question` VARCHAR(255) NULL,
    `answer` VARCHAR(255) NULL,
    `product_id` BINARY(16) NOT NULL,
    `created_at` DATETIME(3) NOT NULL,
    `updated_at` DATETIME(3) NULL,
    PRIMARY KEY (`id`),
    KEY `fk.faq.product_id` (`product_id`),
    CONSTRAINT `fk.faq.product_id` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`,`version_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Ich habe eine FAQ-Tabelle in Kombination mit der Produkttabelle erstellt, aber es treten ständig Fehler auf und ich kann nicht finden, wo die Fragen in der Tabelle falsch sind. Danke für die Hilfe.

P粉798010441
P粉798010441

Antworte allen(1)
P粉845862826

移除这段英文中的逗号 - PRIMARY KEY (id, version_id),移除 product_id BINARY(16) 中的 not null,移除 version_id。 REFERENCES product (id,version_id)

https://dbfiddle.uk/rg25idw-

在引用的表中,必须存在一个索引,其中引用的列是以相同顺序作为第一列的。


https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!