mysql : la référence de clé et la référence de table ne correspondent pas
P粉798010441
P粉798010441 2023-07-18 15:17:02
0
1
591

Message d'erreur :

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

Liste de produits :

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;

J'ai créé un tableau FAQ, combiné avec le tableau des produits, mais il continue de recevoir des erreurs et je n'arrive pas à trouver où les questions du tableau se trompent. Merci pour l'aide.

P粉798010441
P粉798010441

répondre à tous(1)
P粉845862826

Supprimez la virgule dans ce paragraphe anglais - PRIMARY KEY (id, version_id), supprimez not null dans product_id BINARY(16), supprimez version_id. RÉFÉRENCES product (id,version_id)

https://dbfiddle.uk/rg25idw-

Dans la table référencée, il doit y avoir un index dans lequel les colonnes référencées sont dans le même ordre que la première colonne.


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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!