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
Reviewed by kodehero
on
December 19, 2017
Rating:
gan kalau ada error begini "Symfony\Component\Debug\Exception\FatalThrowableError : Class 'App\Providers\Schema' not found" gmn ?
ReplyDeleteJangan lupa import Schema nya juga. "use Illuminate\Support\Facades\Schema;" (Tanpa tanda petik) di bagaian atas class
DeleteTerima kasih banyak mas bantuannya. Saya stuck dari kemarin ternyata gini doang haha.
Deletebang mohon bimbingannya
ReplyDeleteIn 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
masih tetep gan gimana nih ????
ReplyDelete