Cara memperbaiki Specified key was too long error pada Laravel

Saifuddin Romli |

Cara memperbaiki Specified key was too long error pada Laravel

Hai. selamat datang di mohsai.com. Kali ini saya akan membuat ulasan tentang, Cara memperbaiki Specified key was too long error di Laravel. Pada versi Laravel 5.4, laravel melakukan perubahan database default character set, dan sekarang utf8mb4 sudah bisa untuk menyimpan emoji. Perubahan ini hanya memengaruhi aplikasi baru dan selama kalian menjalankan MySQL v5.7.7 dan lebih tinggi, kalian tidak perlu melakukan perubahan apa pun.

Laravel 5.4 uses the utf8mb4 character set by default, which includes support for storing “emojis” in the database. If you are upgrading your application from Laravel 5.3, you are not required to switch to this character set.

https://laravel.com/docs/5.4/releases#utf8mb4

Untuk kalian yang menjalankan MariaDB atau versi MySQL dengan versi yang lebih lama, kalian mungkin menemukan kesalahan atau error ini ketika mencoba menjalankan migrasi:

[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

Mengatasi Error Specified key was too long error

Nahh. Bagaimana cara memperbaiki saat error saat migrasi seperti diatas? yaa, yang harus kalian lakukan adalah mengedit file AppServiceProvider.php kalian. Berikut ini langkah-langkah memperbaikinya:

  • Buka file AppServiceProvider.php pada folder app/Providers
  • tambahkan
use Illuminate\Support\Facades\Schema;
  • Setelah itu tambahkan 
public function boot()
{
    Schema::defaultStringLength(191);
}

hinggga perubahan pada AppServiceProvider.php, seperti berikut ini 

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
}

Jika kalian sudah mengikuti semua langkah diatas, seharusnya semuanya sudah berfungsi seperti biasa. Jika kalian mengalami kesulitan kalian bisa menanyakannya dikolom komentar.

Semoga artikel tentang Cara mengatasi Specified key was too long error di Laravel ini bermanfaat dan membantu kalian. Jika kalian menyukai posting ini, kalian bisa membagikan artikel ini.

Penulis Saifuddin Romli Seorang Programmer yang hobi menulis, dan menyukai dunia teknologi, game, travel, kuliner dan gadget.