SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes Hatası Çözümü
Bu hata, veritabanınızda users
tablosuna email
sütunu üzerinde benzersiz bir indeks eklemeye çalışırken meydana geldiği anlamına gelir. Laravel varsayılan olarak, sütunun türüne bağlı olarak sütun adlarına göre indeksler oluşturur. Ancak, bazı veritabanları, özellikle MySQL sürüm 5.7.7 öncesi sürümleri, sütun adlarına bağlı indekslerin maksimum uzunluğu 767 bayttır.
Bu hatayı çözmek için birkaç seçeneğiniz var:
- Laravel 5.8 ve öncesi sürümlerinde
AppServiceProvider
sınıfında$stringLength
özelliğini ayarlayabilirsiniz:use Illuminate\Support\Facades\Schema; class AppServiceProvider extends ServiceProvider { public function boot() { Schema::defaultStringLength(191); } }
- Laravel 5.8 ve sonraki sürümlerinde, varsayılan bir string uzunluğu belirtmek için
config/database.php
dosyasındaengine
anahtarınıInnoDB
olarak ayarlayabilirsiniz:
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',