Como você pode ver na mensagem de erro - "O tamanho máximo da coluna é 767 bytes", se você quiser criar um índice nela. Um
VARCHAR(255)
coluna pode levar até 765 (255*3) bytes usando utf8
e 1020 (255*4) bytes usando utf8mb4
. Isso ocorre porque no MySQL utf8
leva até 3 bytes e utf8mb4
até 4 bytes (o UTF8 real). Criando assim um VARCHAR(255)
(único) índice com utf8mb4
vai falhar. Estas são suas opções para corrigir o problema:
Defina o agrupamento padrão em
my.ini
:collation_server=utf8_unicode_ci
character_set_server=utf8
Defina o agrupamento padrão para o banco de dados ao criar:
CREATE DATABASE IF NOT EXISTS `your_db` COLLATE 'utf8_unicode_ci'
Defina o agrupamento padrão para a tabela/coluna. (não recomendo)
Altere o tamanho da coluna para 190 (
varchar(190)
) ou menos. Correção do Laravel 5.4
A configuração do servidor Mysql é substituída pelo comando migration do Laravel. Ele definirá o agrupamento e o conjunto de caracteres para a versão da configuração.
Altere os campos
charset
e collation
do mecanismo db no arquivo de configuração do banco de dados localizado em 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,
],
..