mysql: 鍵引用和表格引用不匹配
P粉798010441
P粉798010441 2023-07-18 15:17:02
0
1
616

錯誤訊息:

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

產品表:

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;

常見問題表:

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;

我建立了一個常見問題表,與產品表結合在一起,但是它總是出現錯誤,我找不到表中的問題在哪裡出錯了。謝謝幫忙。

P粉798010441
P粉798010441

全部回覆(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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!