Como Desativar strict mode em MySQL ou MariaDB

O que é o strict mode?

No MySQL e MariaDB, o modo estrito (strict mode) influencia como os valores inválidos ou ausentes são tratados em consultas de alteração de dados, incluindo instruções como INSERT, UPDATE e CREATE TABLE. Com o modo estrito ativado (padrão), valores inválidos ou ausentes podem gerar erros ou avisos durante o processamento da consulta.

Desativar o modo estrito pode parecer benéfico, pois a consulta ajusta valores inválidos ou ausentes e gera apenas avisos. Contudo, isso pode levar a resultados inesperados, como a truncagem de dados que excedam limites de caracteres. A necessidade de desativar o modo estrito ocorre frequentemente em servidores executando WHMCS, uma exigência dessa ferramenta.

Desativando o Modo Estrito

Passo 0: Verificação do Status

Primeiro, verifique se o modo estrito está ativo com o comando:

mysql -e "SELECT @@sql_mode;"

Se estiver ativo, você verá uma saída similar a:

+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+

Passo 1: Backup

Antes de fazer alterações, crie um backup do arquivo de configuração /etc/my.cnf:

cp -a /etc/my.cnf{,.strict.bak}

Passo 2: Desabilitando o Modo Estrito

Edite o arquivo /etc/my.cnf. Encontre a linha sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES e substitua por:

sql_mode=""

Passo 3: Reiniciar o Servidor MySQL

Reinicie o servidor MySQL para aplicar as alterações:

systemctl restart mysql

Passo 4: Verificação Final

Confirme se o modo estrito foi desativado:

mysql -e "SELECT @@sql_mode;"

A saída esperada deve ser vazia, indicando que o modo estrito está desativado:

+------------+
| @@sql_mode |
+------------+
| |
+------------+

Referências Úteis