SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes Hatası Çözümü

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:

  1. 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);
        }
    }
    
  1. Laravel 5.8 ve sonraki sürümlerinde, varsayılan bir string uzunluğu belirtmek için config/database.php dosyasında engine anahtarını InnoDB olarak ayarlayabilirsiniz:
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',