MySQL Error #1071: Menyelidiki Kekangan Panjang Utama
Apabila cuba mengubah suai jadual MySQL dengan menambahkan kekangan kunci unik pada dua VARCHAR lajur, mesej ralat yang agak membingungkan timbul: "#1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maksimum ialah 767 bait". Walaupun kedua-dua lajur mempunyai saiz yang kelihatan baik dalam had 767 bait, memahami ralat ini memerlukan penyelaman yang lebih mendalam ke dalam kekangan panjang kunci MySQL.
Mengulas Semula Had Panjang Utama
Panjang maksimum untuk kunci dalam MySQL versi 5.6 dan lebih awal sememangnya 767 bait untuk jadual InnoDB dan 1,000 bait untuk jadual MyISAM. Walau bagaimanapun, dalam MySQL versi 5.7 dan ke atas, had ini telah dikembangkan kepada 3072 bait yang lebih besar.
Menyahkod Storan VARCHAR
Walaupun jenis data VARCHAR mencadangkan maksimum penyimpanan 20 dan 500 bait untuk lajur anda masing-masing, pengiraan ini tidak mengambil kira pengekodan aksara. Jika medan VARCHAR anda dikodkan dalam format utf8mb4, panjang awalan indeks maksimum berkesan dikurangkan sebanyak satu perempat, menghasilkan hanya 191 bait (767 / 4).
Mencari Penyelesaian
Untuk menyelesaikan isu ini, pertimbangkan untuk melaksanakan salah satu daripada yang berikut strategi:
Atas ialah kandungan terperinci Mengapa MySQL Throw Ralat #1071: 'Kunci yang ditentukan terlalu panjang'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!