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

Kesalahan MySQL:spesifikasi kunci tanpa panjang kunci

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Foreign Key Error 1005 errno 150 primary key sebagai kunci asing

  2. Format Angka sebagai Persentase di MySQL

  3. Jenis kesalahan sintaks tidak valid =MyISAM dalam DDL dihasilkan oleh Hibernate

  4. Hubungkan ke mysql dalam wadah buruh pelabuhan dari Host

  5. Pengecualian di utas utama java.sql.SQLException:Akses ditolak untuk pengguna ''@'localhost' (menggunakan kata sandi:TIDAK)