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
İlk Yorumu Siz Yapın