Kesalahan terjadi karena MySQL hanya dapat mengindeks karakter N pertama dari BLOB atau TEXT
kolom. Jadi Kesalahan terutama terjadi ketika ada jenis bidang/kolom TEXT
atau BLOB atau milik TEXT
atau BLOB
jenis seperti TINYBLOB
, MEDIUMBLOB
, LONGBLOB
, TINYTEXT
, MEDIUMTEXT
, dan LONGTEXT
yang Anda coba buat menjadi kunci utama atau indeks. Dengan BLOB
lengkap atau TEXT
Tanpa nilai panjang, MySQL tidak dapat menjamin keunikan kolom karena ukurannya yang bervariasi dan dinamis. Jadi, saat menggunakan BLOB
atau TEXT
jenis sebagai indeks, nilai N harus diberikan agar MySQL dapat menentukan panjang kunci. Namun, MySQL tidak mendukung batas panjang kunci pada TEXT
atau BLOB
. TEXT(88)
tidak akan berhasil.
Kesalahan juga akan muncul saat Anda mencoba mengonversi kolom tabel dari non-TEXT
dan non-BLOB
ketik seperti VARCHAR
dan ENUM
ke dalam TEXT
atau BLOB
ketik, dengan kolom yang sudah didefinisikan sebagai batasan atau indeks unik. Perintah Alter Table SQL akan gagal.
Solusi untuk masalah ini adalah dengan menghapus TEXT
atau BLOB
kolom dari indeks atau batasan unik atau setel bidang lain sebagai kunci utama. Jika Anda tidak dapat melakukannya, dan ingin membatasi TEXT
atau BLOB
kolom, coba gunakan VARCHAR
ketik dan tempatkan batas panjang di atasnya. Secara default, VARCHAR
dibatasi hingga maksimum 255 karakter dan batasnya harus ditentukan secara implisit dalam tanda kurung tepat setelah deklarasi, yaitu VARCHAR(200)
akan membatasi hingga 200 karakter saja.
Terkadang, meskipun Anda tidak menggunakan TEXT
atau BLOB
jenis terkait di tabel Anda, Kesalahan 1170 juga dapat muncul. Itu terjadi dalam situasi seperti ketika Anda menentukan VARCHAR
kolom sebagai kunci utama, tetapi salah mengatur panjang atau ukuran karakternya. VARCHAR
hanya dapat menerima hingga 256 karakter, jadi apa pun seperti VARCHAR(512)
akan memaksa MySQL untuk secara otomatis mengonversi VARCHAR(512)
ke SMALLTEXT
tipe data, yang kemudian gagal dengan kesalahan 1170 pada panjang kunci jika kolom digunakan sebagai kunci utama atau indeks unik atau non-unik. Untuk mengatasi masalah ini, tentukan angka kurang dari 256 sebagai ukuran untuk VARCHAR
lapangan.
Referensi:Kesalahan MySQL 1170 (42000):Kolom BLOB/TEXT Digunakan dalam Spesifikasi Kunci Tanpa Panjang Kunci