Blog
Mengatasi Syntax error or access violation Pada Laravel
- April 25, 2018
- Posted by: Nuris Akbar SST, M.Kom
- Category: Tutorial Laravel

Mungkin anda pernah mengalami masalah ini ketika pertama kali malakukan migrate setelah membuat skema database menggunakan migration, masalah ini timbul karna laravel telah menggubah character set default pada database MySQL atau MariaDB dan menggantinya dengan utf8mb4 yang memungkinkan kita menyimpan karakter emojis. tapi ini hanya akan terjadi jika anda menggunakan MySQL versi v5.7.7 atau yang terbaru.
[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
Cara Pertama Mengatasi Syntax error or access violation Pada Laravel
ada dua cara yang bisa anda lakukan untuk mengatasi masalah tersebut, solusinya pertama silahkan buka file AppServiceProvider.php yang ada pada folder app/providers dan anda akan melihat script seperti berikut ini :
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // } }
Kemudian silahkan tambahkan facade Schema seperti dibawah ini :
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
sekarang silahkan simpan file AppServiceProvider.php dan lakukan proses migrate kembali dan seharusnya pesan error itu tidak muncul lagi.
Cara Kedua Mengatasi Syntax error or access violation Pada Laravel
Cara kedua anda bisa mengganti default charset yang digunakan oleh laravel, konfigurasi MySQL tersebut dapat and temukan pada folder config/database.php. dan kemudian silahkan ganti charset dan collation nya menjadi seperti berikut :
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],
Kemudian silahkan ubah menjadi :
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],
jangan lupa simpan file database.php dan silahkan coba lakukan migrate kembali.
Nuris Akbar SST, M.Kom
Senior Backend Web Developer Dengan Pengalaman Lebih Dari 8 Tahun, Sekarang Menjadi CTO Di Startup Globalvillage, Founder Academy Diigtal Dan Instruktur Training Di PT Brainamtics Cipta Informatika.
Author:nuris


Nuris Akbar SST, M.Kom
Senior Backend Web Developer Dengan Pengalaman Lebih Dari 8 Tahun, Sekarang Menjadi CTO Di Startup Globalvillage, Founder Academy Diigtal Dan Instruktur Training Di PT Brainamtics Cipta Informatika.