Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat MySQL 1071: 'Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait'?

Bagaimana untuk Menyelesaikan Ralat MySQL 1071: 'Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait'?

Susan Sarandon
Lepaskan: 2024-12-13 19:21:10
asal
692 orang telah melayarinya

How to Solve MySQL Error 1071:

Ralat MySQL 1071: "Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait"

Apabila mencipta jadual MySQL dengan indeks komposit, pengguna mungkin menghadapi ralat "Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait". Ralat ini menunjukkan bahawa gabungan panjang lajur diindeks melebihi saiz storan maksimum yang dibenarkan iaitu 1000 bait.

Isu dalam coretan kod yang disediakan terletak pada panjang berlebihan indeks komposit indeks:

KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`)
Salin selepas log masuk

Penyelesaian

Untuk menyelesaikan ralat ini, pertimbangkan berikut:

1. Optimumkan Panjang Indeks:

  • Lajur VARCHAR yang panjang biasanya tidak boleh diindeks kerana indeks yang besar dan tidak cekap.
  • Gunakan indeks awalan untuk mengindeks hanya subset data, yang lazimnya lebih pendek daripada panjang penuh lajur.
KEY `index` (`parent_menu_id`,`menu_link`(50),`plugin`(50),`alias`(50))
Salin selepas log masuk

2. Tentukan Panjang Awalan Optimum:

Gunakan pertanyaan berikut untuk menentukan panjang awalan optimum untuk lajur tertentu:

SELECT
 ROUND(SUM(LENGTH(`menu_link`)<10)*100/COUNT(`menu_link`),2) AS pct_length_10,
 ROUND(SUM(LENGTH(`menu_link`)<20)*100/COUNT(`menu_link`),2) AS pct_length_20,
 ROUND(SUM(LENGTH(`menu_link`)<50)*100/COUNT(`menu_link`),2) AS pct_length_50,
 ROUND(SUM(LENGTH(`menu_link`)<100)*100/COUNT(`menu_link`),2) AS pct_length_100
FROM `pds_core_menu_items`;
Salin selepas log masuk

Sebagai contoh, jika pertanyaan kembali:

+---------------+---------------+---------------+----------------+
| pct_length_10 | pct_length_20 | pct_length_50 | pct_length_100 |
+---------------+---------------+---------------+----------------+
|         21.78 |         80.20 |        100.00 |         100.00 |
+---------------+---------------+---------------+----------------+
Salin selepas log masuk

Ia menunjukkan bahawa 80% daripada rentetan adalah kurang daripada 20 aksara, jadi panjang awalan 50 sudah memadai.

3. Laraskan Jenis Data INT:

Jenis data INT diikuti dengan argumen berangka (cth., INT(1)) tidak menjejaskan storan atau julat nilai. Jenis data INT sentiasa menduduki 4 bait dan membenarkan nilai dalam julat -2147483648 hingga 2147483647. Argumen berangka hanya mempengaruhi padding semasa paparan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1071: 'Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan