Penghadan Panjang Kunci MySQL dan Pembetulannya
Apabila cuba mencipta indeks unik pada dua lajur VARCHAR, pengguna mungkin menghadapi ralat "# 1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maks ialah 767 bait". Ralat ini berpunca daripada pengehadan MySQL pada panjang kunci.
Memahami Had Panjang Kunci
Dalam MySQL versi 5.6 dan sebelumnya, terdapat panjang kunci maksimum 767 bait untuk jadual InnoDB. Had ini digunakan untuk gabungan semua medan diindeks dalam kunci unik. Untuk jadual MyISAM, had ini ialah 1,000 bait.
Faktor Pengekodan Aksara UTF-8
Apabila menggunakan pengekodan aksara UTF-8 (utf8mb4), adalah penting untuk ambil perhatian bahawa ia menggunakan sehingga empat bait untuk mewakili satu aksara. Akibatnya, panjang awalan indeks maks 767 bait secara berkesan dikurangkan kepada 191 aksara untuk medan yang dikodkan utf8mb4.
Penyelesaian Kemungkinan
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
Dalam MySQL versi 5.7 dan lebih baru, panjang kunci maks telah ditingkatkan kepada 3072 bait, memberikan lebih fleksibiliti apabila berurusan dengan kunci besar. Walau bagaimanapun, adalah penting untuk mempertimbangkan faktor pengekodan aksara dan pengoptimuman model data untuk mengelakkan ralat panjang kunci.
Atas ialah kandungan terperinci Mengapa Indeks Unik MySQL Saya Terlalu Panjang, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!