O problema:"A chave especificada era muito longa; o comprimento máximo da chave é 767 bytes"
Um desses problemas que você pode encontrar usando o framework PHP Laravel é este:
Specified key was too long; max key length is 767 bytes
Após algumas pesquisas, descobri que está surgindo ao usar versões mais antigas do MySQL (anteriores a 5.7.8) ou MariaDB (anteriores a 10.2.2). Foi MariaDB no meu caso.
Solução nº 1:
No Laravel, isso pode ser resolvido simplesmente alterando a configuração do provedor de serviços do aplicativo (em
app/Providers/AppServiceProvider.php
) com o seguinte:use Illuminate\Support\Facades\Schema;
public function boot()
{
/**
* Ensure we aren't running into `Specified key was too long; max key length is 767 bytes`
*
* @see https://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/
**/
Schema::defaultStringLength(191);
}
Depois disso, você pode precisar reconstruir seu banco de dados usando
php artisan migrate:fresh --seed
- isso irá redefinir completamente seu banco de dados e começar do zero. Solução nº 2:
Você também pode atualizar seu servidor de banco de dados. Isso não foi discutido aqui, pois é muito específico do sistema. DuckDuckGo é seu amigo 💪️