Laravel’de migration yaparken alınan “Specified key was too long error” hatası için çözümden bahsedeceğim. İşi uzatarak ilk olarak neden kaynaklandığından söz edelim.
Mysql 5.7 ya da eşdeğer MariaDB kullanıyorsanız, karakter setiniz utf8mb4 ise bu hata ile karşılaşırsınız. utf8mb4 ile emojileri veritabanında saklayabiliyoruz.
Migration yaparken tam olarak bu hatayla karşılaşırız;
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Çözüm için ise AppServiceProvider.php dosyasına;
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
ekliyoruz ve problem çözülmüş oluyor. Yarım kalan migration dosyalarınızı migration tablosundan kaldırın. Sağlıklı olarak yeniden migrate edin.
İyi çalışmalar.