DBAtlas · Veritabanı operasyon atlası

1071: Specified key was too long; max key length is 767 bytes

MySQL

Ne demek?

Oluşturulmaya çalışılan index (ya da anahtar), izin verilen maksimum bayt uzunluğunu aştı. Özellikle çok baytlı karakter kümelerinde VARCHAR index'leri hızla bu sınıra ulaşır.

Neden olur?

utf8mb4 (karakter başına 4 bayt) ile geniş VARCHAR sütununa index; eski InnoDB satır formatı (REDUNDANT/COMPACT; 5.7 ve öncesinde ayrıca devre dışı innodb_large_prefix); çok sütunlu bileşik index'in toplam uzunluğunun sınırı aşması; büyük primary key.

Nasıl çözülür?

İndekslenen sütun uzunluğunu kısaltın ya da öntakı (prefix) index kullanın: CREATE INDEX idx ON tablo (sutun(191)); DYNAMIC/COMPRESSED satır formatıyla 3072 bayt sınırına çıkın (MySQL 8.0'da DYNAMIC varsayılandır; innodb_large_prefix 8.0'da kaldırıldı, yalnızca 5.7 ve öncesinde gerekir). Gerekirse sütunun karakter kümesini/uzunluğunu gözden geçirin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar