İçeriğe geç

Laravel “ Specified key was too long error ” Hatası

Laravel’de kod yazmaya başladığım ilk zamanlar anlamakta zorluk çektiğim bir hataydı. Bu hatayı genelde migration yaparken alırız. Laravel’de rastlayabileceğiniz ilk hatalardan biridir en azından benim için öyleydi 😀

Aslında veri tabanının karakter kodlamasını “utf8mb4” olarak değiştirmek bu soruna alternatif bir çözümdür. Bu kodlama biçimi, UTF-8 kodlamasında herhangi bir karakteri destekler ve MySQL 5.7.7 ve sonraki sürümleri tarafından desteklenir. Bir de önerilen çözüme göz atalım . Karakter kodlamasını değiştirmektense bu yöntem daha çok kullanılmaktadır.

Laravel ‘ de ” Specified key was too long ” hatası, veri tabanında bir sütun oluştururken veya eklerken ortaya çıkar. Bu hata, MySQL’in UTF-8 kodlamasında kullanılan bir indeks boyutu kısıtlaması nedeniyle oluşur. UTF-8, bazı karakterlerin birden fazla bayt gerektirdiği bir karakter kodlama biçimidir. Bu nedenle, bir sütun veya dizgi alanı, indeks boyutu kısıtlaması nedeniyle UTF-8 kodlamasında bir karakterin birden fazla bayt gerektirmesi durumunda ” Specified key was too long ” hatası verebilir.

Çözüm için şu adımları izleyebilirsiniz.

  • app -> Providers -> AppServiceProvider.php dosyasına aşağıdaki kodu ekleyin:
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

Bu kod, varsayılan sütun uzunluğunu 191 karaktere ayarlar ve bu, MySQL’in UTF-8 kodlamasındaki sınırın altındadır.

Sorununuz büyük ihtimalle çözülecektir.

İyi Çalışmalar

Kategori:Laravel

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

ㅤㅤㅤ