Rumah  >  Artikel  >  pangkalan data  >  Mengapa Saya Mendapat Kod Ralat MySQL #1089 \"Kunci Awalan Salah\"?

Mengapa Saya Mendapat Kod Ralat MySQL #1089 \"Kunci Awalan Salah\"?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 07:35:30272semak imbas

Why Am I Getting MySQL Error Code #1089

Memahami Kod Ralat MySQL #1089

Kod ralat MySQL #1089, "Kunci awalan salah," menunjukkan isu dengan kunci utama atau indeks unik. Ia berlaku secara khusus apabila bahagian kunci yang digunakan bukan rentetan atau apabila panjang bahagian kunci yang digunakan melebihi panjang bahagian kunci sebenar.

Dalam pertanyaan SQL yang disediakan:

CREATE TABLE `movies`.`movie` (
  `movie_id` INT(3) NULL AUTO_INCREMENT,
  `movie_name` VARCHAR(25) NULL,
  `movie_embedded_id` VARCHAR(50) NULL,
  `rating_no` INT(3) NULL,
  `movie_description` VARCHAR(50) NULL,
  PRIMARY KEY (`movie_id`(3))
) ENGINE = InnoDB;

The isu berpunca daripada penggunaan PRIMARY KEY (movie_id(3)). Baris ini mencipta kunci utama pada tiga bait pertama lajur movie_id, yang ditentukan oleh segmen (3).

Walau bagaimanapun, cuba membuat awalan pada jenis data berangka (INT dalam kes ini) tidak disokong oleh MySQL. Ini kerana kekunci awalan hanya boleh digunakan pada jenis data berasaskan rentetan.

Untuk menyelesaikan ralat, anda harus menggunakan pertanyaan berikut:

CREATE TABLE `movies`.`movie` (
  `movie_id` INT(3) NULL AUTO_INCREMENT,
  `movie_name` VARCHAR(25) NULL,
  `movie_embedded_id` VARCHAR(50) NULL,
  `rating_no` INT(3) NULL,
  `movie_description` VARCHAR(50) NULL,
  PRIMARY KEY (`movie_id`)
) ENGINE = InnoDB;

Dengan mengalih keluar segmen (3), kunci utama dibuat pada keseluruhan lajur movie_id berbanding hanya awalannya. Ini menyelesaikan isu dan membenarkan MySQL mencipta kunci utama dengan betul.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Kod Ralat MySQL #1089 \"Kunci Awalan Salah\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn