Rumah > pangkalan data > tutorial mysql > Mengapa Saya Mendapat Ralat MySQL #1071: Kunci Yang Ditentukan Terlalu Panjang?

Mengapa Saya Mendapat Ralat MySQL #1071: Kunci Yang Ditentukan Terlalu Panjang?

Mary-Kate Olsen
Lepaskan: 2024-12-28 07:41:42
asal
388 orang telah melayarinya

Why Am I Getting MySQL Error #1071: Specified Key Was Too Long?

Ralat MySQL #1071: Memahami Had Panjang Utama

Apabila cuba menambah indeks unik pada jadual dengan lajur tertentu (lajur1 dan lajur2 ), pengguna mungkin menghadapi ralat berikut:

#1071 - Specified key was too long; max key length is 767 bytes
Salin selepas log masuk

Semasa ia pada mulanya kelihatan bahawa panjang gabungan lajur1 (20) dan lajur2 (500) berada dalam panjang kunci maksimum 767 bait, penjelasan sebenar terletak pada pemahaman had pengindeksan awalan MySQL.

Dalam versi MySQL sebelum 5.7, Jadual InnoDB mempunyai had indeks awalan sebanyak 767 bait, manakala jadual MyISAM mempunyai had yang lebih besar iaitu 1,000 bait. Ini bermakna bilangan bait maksimum yang digunakan oleh indeks adalah berdasarkan bahagian permulaan lajur yang disertakan dalam indeks.

Dalam contoh yang diberikan, kedua-dua lajur1 dan lajur2 ialah lajur VARCHAR(x) , yang menyimpan rentetan panjang berubah-ubah. Ralat berlaku kerana MySQL menganggap keseluruhan panjang lajur sebagai sebahagian daripada indeks, bukan hanya data sebenar yang disimpan. Akibatnya, walaupun data sebenar dalam lajur1 dan lajur2 lebih pendek daripada jumlah panjang yang diperuntukkan, saiz indeks melebihi had maksimum.

Untuk mengelakkan ralat ini, pengguna mempunyai beberapa pilihan:

  • Hadkan panjang lajur VARCHAR: Menetapkan had yang lebih rendah pada panjang VARCHAR memastikan saiz indeks kekal di bawah maksimum.
  • Indeks hanya sebahagian daripada lajur: Nyatakan hanya subset bagi setiap aksara lajur dalam definisi indeks, seperti lajur1(15) dan lajur2(200). Ini mengurangkan jumlah saiz indeks dan membolehkan indeks dibuat.
  • Pertimbangkan untuk menyemak model data: Terokai cara alternatif untuk melaksanakan peraturan perniagaan tanpa melebihi had panjang utama. Ini mungkin melibatkan pembahagian data kepada berbilang lajur atau memperkenalkan jadual tambahan.

Memahami kesan panjang lajur pada saiz indeks adalah penting untuk mengelakkan ralat panjang kunci MySQL. Dengan mengurus saiz lajur dan definisi indeks dengan teliti, pengguna boleh melaksanakan indeks dengan jayanya dan mengekalkan integriti data tanpa melebihi had pangkalan data.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL #1071: Kunci Yang Ditentukan Terlalu Panjang?. 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