Mengatasi Galat “1071 Specified key was too long” Saat Melakukan Migration di Laravel 5.4


Laravel pada versi 5.4 telah melakukan perubahan asali (default) pada character set dengan menggunakan utf8mb4 pada basisdatanya (database). Dengan utf8mb4 inilah, memungkin kita dapat menyimpan karakter berupa emoji ke dalam basis data (database).

Namun, masalah baru akan muncul, ketika kita menggunakan MySQL lebih rendah di bawah versi 5.7.7 (< 5.7.7) atau MariaDB lebih rendah di bawah versi 10.2.2 (< 10.2.2). Pada saat kita melakukan migrasi basis data (database migration) menggunakan artisan. Ia akan memunculkan galat (error) seperti berikut:

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes”</blockquote>

Seperti gambar di bawah ini:

Oleh karenanya, kita perlu mengkonfigurasi secara manual pada berkas AppServiceProvider.php yang bisa kita temui pada direktori /app/Providers/.

Kita perlu menambahkan kode berikut:

...
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
…

Setelah itu simpan lalu lakukan migrasi kembali dengan perintah:

php artisan migrate:rollback

Maka galat tersebut akan hilang.