MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Laravel:A chave especificada era muito longa; comprimento máximo da chave é 767 bytes

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 💪️