1
resposta

Uso do mySQL [ERRO]

O meu está dando o seguinte erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá! Tudo bem?

O erro que você está enfrentando é bastante comum ao usar o MySQL com o Laravel, especialmente quando se trata de versões mais antigas do MySQL que têm um limite de 767 bytes para índices. O erro específico é:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

Isso acontece porque a chave que você está tentando criar excede o tamanho máximo permitido pelo MySQL. Aqui estão algumas soluções possíveis para resolver esse problema:

  1. Redefinir o tamanho máximo: Conforme a documentação e outras discussões que já encontrei sobre esse problema, ele é normalmente solucionado adicionando um tamanho restrito no arquivo "/app/Providers/AppServiceProvider.php". No mesmo deve ser adicionado o trecho Schema::defaultStringLength(191);.

    Segue um exemplo de como ficaria:

    use Illuminate\Support\Facades\Schema;
    
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
    
  2. Alterar a codificação de caracteres utilizada: Aqui você pode utilizar de outra codificação, diminuindo assim a quantidade de bytes de armazenamento usados. Mas antes de alterar a codificação você deve rodar o comando php artisan db:wipe.

    Ele é responsável apagar todas as tabelas, visualizações e procedimentos armazenados do banco de dados configurado no arquivo .env. Em outras palavras, ele limpa completamente o banco de dados, deixando-o vazio.

    Agora, para alterar a codificação, atualize esses valores (abaixo) do array mysql que está no arquivo "/config/database.php":

    'charset' => 'utf8', 
    'collation' => 'utf8_general_ci',
    

    E então rode:

    php artisan migrate
    

Está feito! As tabelas de migração serão criadas com sucesso.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.