Mengatasi Laravel Specified Key Was Too Long

Cara Mengatasi Error Specified Key Was Too Long pada Laravel
Halo sobat koder! Masih ngoding kan?
Pada kesempatan kali ini, saya kan berbagi tutorial tentang bagaimana cara mengatasi error specified key was too long pada sat proses migrations di laravel terbaru.
Jadi sejak laravel 5.4 keatas, laravel melakukan update terhadap database character set defaultnya. Pada versi tersebut laravel menambahkan utf8mb4 yang memungkinkan kita untuk menyimpan emoji di database. Namun hal ini hanya akan berpengaruh pada aplikasi baru saja, jika kalian menggunakan MySQL versi 5.7.7 atau yang terbaru maka kamu tidak perlu melakukan apa apa.
Jadi buat kalian yang menggunakan MariaDB atau MySQL versi lama (biasanya jika kalian menggunakan MySQL bawaan XAMPP yang lama), maka akan muncul error specified key was too long pada saat melakukan perintah migrations dengan php artisan.
[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
Nah jika kalian mengalami error seperti diatas, silahkan menggunakan solusi berikut untuk memperbaikinya. Silahkan buka app/Providers/AppServiceProvider.php lalu masukan kode berikut pada method boot().
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
Sekarang, silahkan coba lagi untuk melakukan perintah migrations dengan php artisan. Taraaaa! migrasi akan kembali normal dan sukses! Bisa lanjut ngoding lagi deh. 

Akhir Kata

Sebenarnya teknik ini sudah dijelaskan di dokumentasi laravel, tetapi karena fitur ini masih baru jadi mungkin ga kelihatan kalau sudah ada section baru di dokumentasi laravel. Jadi, jangan lupa untuk terus cek update terbaru saat berpindah versi di laravel.
Okee, skeian dulu untuk tutorial tentang cara memperbaiki error specified key was too long pada saat melakukan migrations di laravel. Semoga bermanfaat dan tetap ngoding yah! 
Mengatasi Laravel Specified Key Was Too Long Mengatasi Laravel Specified Key Was Too Long Reviewed by kodehero on December 19, 2017 Rating: 5

5 comments:

  1. gan kalau ada error begini "Symfony\Component\Debug\Exception\FatalThrowableError : Class 'App\Providers\Schema' not found" gmn ?

    ReplyDelete
    Replies
    1. Jangan lupa import Schema nya juga. "use Illuminate\Support\Facades\Schema;" (Tanpa tanda petik) di bagaian atas class

      Delete
    2. Terima kasih banyak mas bantuannya. Saya stuck dari kemarin ternyata gini doang haha.

      Delete
  2. bang mohon bimbingannya

    In Connection.php line 664:

    SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(191) not null, `email` varchar(191) not null, `password` varchar(191) not null, `remember_token` varchar(100) n
    ull, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci)


    In Connection.php line 458:

    SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists

    ReplyDelete
  3. masih tetep gan gimana nih ????

    ReplyDelete

Powered by Blogger.