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

Kesalahan MySQL 1170 (42000):Kolom BLOB/TEXT Digunakan dalam Spesifikasi Kunci Tanpa Panjang Kunci

Saat membuat tabel baru atau mengubah tabel yang ada dengan kunci utama, batasan dan indeks unik, atau saat mendefinisikan indeks baru dengan pernyataan manipulasi Alter Tabel di database MySQL, kesalahan berikut dapat terjadi dan melarang perintah untuk diselesaikan:

KESALAHAN 1170 (42000):BLOB/TEXT kolom 'field_name' digunakan dalam spesifikasi kunci tanpa panjang kunci

Kesalahan terjadi karena MySQL hanya dapat mengindeks karakter N pertama dari kolom BLOB atau TEXT. Jadi Error ini terutama terjadi ketika ada field/kolom tipe TEXT atau BLOB atau yang termasuk tipe TEXT atau BLOB seperti TINYBLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, MEDIUMTEXT, dan LONGTEXT yang Anda coba jadikan sebagai primary key atau index. Dengan full BLOB atau TEXT tanpa nilai panjang, MySQL tidak dapat menjamin keunikan kolom karena ukurannya yang bervariasi dan dinamis. Jadi, ketika menggunakan tipe BLOB atau TEXT sebagai indeks, nilai N harus diberikan agar MySQL dapat menentukan panjang kunci. Namun, MySQL tidak mendukung batasan pada TEXT atau BLOB. TEXT(88) tidak akan berfungsi.

Kesalahan juga akan muncul ketika Anda mencoba mengonversi kolom tabel dari tipe non-TEXT dan non-BLOB seperti VARCHAR dan ENUM menjadi tipe TEXT atau BLOB, dengan kolom yang telah didefinisikan sebagai batasan atau indeks unik. Perintah Alter Table SQL akan gagal.

Solusi untuk masalah ini adalah menghapus kolom TEXT atau BLOB dari indeks atau batasan unik, atau menetapkan bidang lain sebagai kunci utama. Jika Anda tidak bisa melakukannya, dan ingin memberi batas pada kolom TEXT atau BLOB, coba gunakan tipe VARCHAR dan beri batas panjangnya. 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 panjangnya hanya 200 karakter.

Terkadang, meskipun Anda tidak menggunakan tipe terkait TEXT atau BLOB di tabel Anda, Error 1170 mungkin juga muncul. Itu terjadi dalam situasi seperti ketika Anda menentukan kolom VARCHAR 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 tipe data SMALLTEXT, yang kemudian gagal dengan kesalahan 1170 pada panjang kunci jika kolom digunakan sebagai primer kunci atau indeks unik atau non-unik. Untuk mengatasi masalah ini, tentukan angka kurang dari 256 sebagai ukuran untuk bidang VARCHAR.


  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 Mengatur Replikasi Asinkron dari Galera Cluster ke server MySQL Standalone dengan GTID

  2. Cara Mendapatkan Catatan dari 7 Hari Terakhir di MySQL

  3. Jenis/panjang kolom apa yang harus saya gunakan untuk menyimpan kata sandi hash Bcrypt dalam Database?

  4. Cara Memeriksa Status Server di MySQL Workbench menggunakan GUI

  5. Tidak dapat mengubah kolom yang digunakan dalam batasan kunci asing