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
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:
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!