DBAtlas · Veritabanı operasyon atlası

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length

MySQL

Ne demek?

Bir BLOB veya TEXT sütununu index/anahtar tanımında, önek uzunluğu (prefix length) belirtmeden kullandınız. Bu tiplerin tamamı indekslenemez; yalnızca ilk N karakteri/baytı indekslenebilir.

Neden olur?

CREATE TABLE veya CREATE INDEX içinde bir TEXT/BLOB sütununa uzunluk vermeden INDEX/UNIQUE/PRIMARY KEY tanımlamak. MySQL, potansiyel olarak çok büyük bu değerlerin tamamını indeksleyemeyeceği için önek uzunluğu ister.

Nasıl çözülür?

Index'te önek uzunluğu belirtin: INDEX (aciklama(255)) gibi. Örnek: ALTER TABLE tablo ADD INDEX idx_aciklama (aciklama(191)); (utf8mb4'te InnoDB anahtar önek sınırı nedeniyle 191 sık kullanılır). Tam metin araması gerekiyorsa FULLTEXT index düşünün. Kısa ve tekil olması gereken alanlarda sütunu VARCHAR'a çevirmek daha uygun olabilir.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar