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
- MariaDB SQL Mode: MariaDB Documentation
- MySQL SQL Mode: MySQL Documentation