Rumah  >  Soal Jawab  >  teks badan

mysql: rujukan kunci dan rujukan jadual tidak sepadan

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.

P粉798010441P粉798010441459 hari yang lalu610

membalas semua(1)saya akan balas

  • P粉845862826

    P粉8458628262023-07-19 00:36:01

    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

    balas
    0
  • Batalbalas