Se seu aplicativo foi escrito para versões mais antigas do MySQL e não é compatível com o modo SQL estrito no MySQL 5.7, você pode desabilitar o modo SQL estrito. Por exemplo, aplicativos como WHMCS 6 e Craft 2 não suportam o modo SQL estrito.
Se você estiver usando o WHMCS 7, consulte nosso artigo sobre como personalizar o MySQL para WHMCS 7.
Para desabilitar o modo SQL estrito, SSH no seu servidor como root e crie um novo arquivo de configuração usando nano ou o editor de sua escolha:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
No arquivo, insira estas duas linhas:
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Salve o arquivo pressionando CTRL + X , então s , então ENTER para confirmar as alterações.
Finalmente, reinicie o MySQL com este comando:
sudo service mysql restart
Essa alteração desabilita duas configurações do modo SQL, STRICT_TRANS_TABLES e ONLY_FULL_GROUP_BY, que foram adicionados no MySQL 5.7 e causam problemas para alguns aplicativos mais antigos.
A confirmação do modo SQL estrito está desabilitado
Você pode confirmar que o modo SQL estrito está desabilitado executando este comando como root :
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
Se o modo estrito estiver desabilitado, você não verá nenhuma saída desse comando.
Se desabilitar o modo estrito causar algum problema para você, você pode reativá-lo excluindo esse arquivo e reiniciando o MySQL novamente.
Como são os erros do modo SQL estrito
Se seu aplicativo não for compatível com o modo SQL estrito, você verá frequentemente erros de SQL, como:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yourdbname.tblannouncements.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by