Bom dia pessoal, um problema que ocorre muito nas versões mais recentes do MySQL, no meu caso a versão 8, e também na versão 5.7, é a funcionalidade de FULL ONLY GROUP BY. Funcionalidade essa que impede de usar a instrução GROUP BY em uma query sem que aplique todos os campos utilizados dentro do SELECT.
Mas para pular essa trava, no OSX (minha versão Mojave) basta seguir os passos a seguir:
Vá até o Terminal e digite:
find / -name my.cnf
Este comando irá encontrar os local onde o arquivo my.cnf está. Então crie um link simbólico para ele, dentro da pasta /etc, da seguinte forma:
sudo ln -s /usr/local/etc/my.cnf /etc/my.cnf
Agora acesse seu MySQL e execute o comando a seguir:
SELECT @@GLOBAl.sql_mode;
Ele irá retornar o seguinte resultado:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Copie a valor retornado e acesse o arquivo my.cnf para editar:
sudo vim /etc/my.cnf
Dentro do arquivo após a linha [mysqld] adicione a instrução sql_mode, com os valores retornados na consulta acima, e remova a parte ONLY_FULL_GROUP_BY, ficando igual abaixo:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Após salvar o arquivo(:wq), reinicie o MySQL e pronto você poderá utilizar a instrução GROUP BY sem mais complicações.
Attention writers! If you’ve ever published on Dev.to, you may be eligible for a limited-time token giveaway. Claim your rewards here. wallet connection required. – Dev.to Community Support