Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan MySQL #1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maksimal adalah 767 byte

767 byte di MySQL versi 5.6 (dan versi sebelumnya), adalah batasan awalan yang dinyatakan untuk tabel InnoDB. Panjangnya 1.000 byte untuk tabel MyISAM. Batas ini telah ditingkatkan menjadi 3072 byte Di MySQL versi 5.7 (dan ke atas).

Anda juga harus menyadari bahwa jika Anda menetapkan indeks pada char besar atau varchar bidang yang utf8mb4 dikodekan, Anda harus membagi panjang awalan indeks maksimum 767 byte (atau 3072 byte) dengan 4 yang menghasilkan 191 . Ini karena panjang maksimum utf8mb4 karakter adalah empat byte. Untuk utf8 karakter itu akan menjadi tiga byte yang menghasilkan panjang awalan indeks maksimum 255 (atau dikurangi null-terminator, 254 karakter).

Salah satu opsi yang Anda miliki adalah hanya menempatkan batas bawah pada VARCHAR bidang.

Opsi lain (menurut respons terhadap masalah ini ) adalah untuk mendapatkan subset kolom daripada seluruh jumlah, yaitu:

ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );

Tweak karena Anda perlu mendapatkan kunci untuk diterapkan, tetapi saya ingin tahu apakah layak untuk meninjau model data Anda mengenai entitas ini untuk melihat apakah ada peningkatan yang mungkin, yang akan memungkinkan Anda untuk menerapkan aturan bisnis yang dimaksud tanpa mencapai batasan MySQL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Karakter Huruf Besar ke Huruf Kecil di MySQL

  2. Bagaimana Mengonversi Tanggal UTC Ke Zona Waktu Lokal di MySql Select Query

  3. Mengapa hanya ada satu kolom TIMESTAMP dengan CURRENT_TIMESTAMP dalam klausa DEFAULT?

  4. Koneksi MySQL melalui terowongan SSH - bagaimana cara menentukan server MySQL lainnya?

  5. Cara Membatasi Baris dalam Kumpulan Hasil MySQL