Mesej ralat:
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
Senarai Produk:
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;
Soalan Lazim:
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;
Saya mencipta jadual Soalan Lazim untuk digabungkan dengan jadual produk, tetapi ia terus mendapat ralat dan saya tidak dapat mencari di mana kesilapan soalan dalam jadual. Terima kasih atas bantuan.
Alih keluar koma dalam perenggan Bahasa Inggeris ini - KUNCI UTAMA (id, version_id), alih keluar bukan batal dalam product_id BINARY(16), alih keluar version_id. RUJUKAN
product
(id
,version_id
)https://dbfiddle.uk/rg25idw-
Dalam jadual yang dirujuk, mesti ada indeks di mana lajur yang dirujuk berada dalam susunan yang sama seperti lajur pertama.
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html