Seperti yang Anda lihat di pesan kesalahan - "Ukuran kolom maksimum adalah 767 byte", jika Anda ingin membuat indeks di atasnya. Sebuah VARCHAR(255)
kolom dapat memakan waktu hingga 765 (255*3) byte menggunakan utf8
dan 1020 (255*4) byte menggunakan utf8mb4
. Ini karena di MySQL utf8
membutuhkan waktu hingga 3 byte dan utf8mb4
hingga 4 byte (UTF8 asli). Jadi membuat VARCHAR(255)
indeks (unik) dengan utf8mb4
akan gagal.
Ini adalah opsi Anda untuk memperbaiki masalah:
Setel susunan default di my.ini
:
collation_server=utf8_unicode_ci
character_set_server=utf8
Setel susunan default untuk database saat membuat:
CREATE DATABASE IF NOT EXISTS `your_db` COLLATE 'utf8_unicode_ci'
Atur susunan default untuk tabel/kolom. (Saya tidak menyarankan itu)
Ubah ukuran kolom menjadi 190 (varchar(190)
) atau kurang.
Perbaikan Laravel 5.4
Konfigurasi server Mysql ditimpa oleh perintah migrasi Laravel. Ini akan mengatur susunan dan rangkaian karakter ke versi konfigurasi.
Ubah bidang charset
dan collation
dari mesin db dalam file konfigurasi database yang terletak di config/database.php
.
..
'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', ''),
//'charset' => 'utf8mb4',
//'collation' => 'utf8mb4_unicode_ci',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
..