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

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

Barbara Streisand
Lepaskan: 2024-12-10 22:34:16
asal
629 orang telah melayarinya

How to Solve MySQL's

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

Isu:

Anda menghadapi ralat "Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 1000 bait" apabila mencipta jadual MySQL dengan pertanyaan tertentu. Pertanyaan ini melibatkan mencipta jadual dengan berbilang lajur dan indeks gabungan pada sebahagian daripadanya.

Penjelasan:

Ralat ini berlaku apabila jumlah panjang lajur yang diindeks melebihi panjang kunci maksimum yang dibenarkan dalam MySQL, iaitu 1000 bait. Dalam kes ini, kekunci "indeks" merentangi empat lajur dengan jenis data VARCHAR, setiap satunya mempunyai panjang maksimum 255 aksara.

Penyelesaian:

Sebagaimana disebutkan dalam penyelesaian yang disediakan, punca ralat ini ialah panjang lajur diindeks yang berlebihan. Untuk menyelesaikan masalah ini, adalah disyorkan untuk menggunakan indeks awalan, di mana hanya sebahagian daripada data diindeks. Ini dicapai dengan menentukan panjang untuk setiap lajur yang diindeks semasa mentakrifkan indeks. Contohnya:

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

Menentukan Panjang Awalan Optimum:

Untuk menentukan panjang awalan yang paling sesuai bagi setiap lajur, adalah disyorkan untuk menganalisis pengedaran data. Anda boleh menggunakan pertanyaan seperti ini:

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

Pertanyaan ini akan memberikan peratusan baris dengan rentetan yang kurang daripada atau sama dengan panjang tertentu. Berdasarkan keputusan ini, anda boleh memilih panjang awalan yang meliputi sebahagian besar data tanpa membuang ruang yang berlebihan. Contohnya, jika 80% daripada rentetan panjangnya kurang daripada 20 aksara, panjang awalan 50 mungkin mencukupi.

Nota Tambahan:

Ia juga penting untuk ambil perhatian bahawa jenis data INT(1) dan INT(32) yang digunakan dalam pertanyaan asal tidak mempunyai kesan pada storan atau julat nilai. INT sentiasa jenis integer 32-bit yang membenarkan nilai dari -2,147,483,648 hingga 2,147,483,647. Argumen berangka dalam kes ini terutamanya mempengaruhi padding paparan dan tidak mempunyai kesan pada storan asas.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat '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