O modo estrito do MySQL e do MariaDB controla como os valores inválidos ou ausentes nas consultas de alteração de dados são tratados; isso inclui as instruções INSERT, UPDATE e CREATE TABLE. Com o modo estrito do MySQL ativado, que é o estado padrão, dados inválidos ou ausentes podem causar avisos ou erros ao tentar processar a consulta.
Quando o modo estrito estiver desabilitado, a mesma consulta terá seus valores inválidos ou ausentes ajustados e produzirá um aviso simples. Este pode parecer o resultado preferencial, no entanto, com o modo estrito desabilitado, certas ações podem causar resultados inesperados; por exemplo, quando o valor que está sendo inserido excede o limite máximo de caracteres, ele será truncado para caber no limite.
Existem várias razões pelas quais o modo estrito do MySQL pode precisar ser desabilitado, porém o mais comum é quando um servidor está executando o WHMCS — este é um requisito dessa ferramenta.
Verificação pré-voo
- Estas instruções destinam-se especificamente a desabilitar o modo estrito do MySQL em um servidor Liquid Web gerenciado com cPanel.
- O servidor deve estar executando MySQL 5.6/5.7 ou MariaDB 10.x
- A linha de comando e o acesso no nível raiz via SSH serão necessários para seguir este tutorial.
Etapa 1:Faça backups, sempre!
Sempre que modificar arquivos em um servidor, é sempre uma boa prática fazer algum tipo de backup com antecedência. Isso garante que você tenha uma maneira de reverter as alterações se algo der errado; também é benéfico porque ajuda a rastrear quando e quais alterações foram feitas.
Enquanto estiver conectado ao SSH com o usuário root, faça o seguinte:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
O comando acima usa ‘BASH brace expansion’ para fazer uma cópia de backup do arquivo em seu diretório original.
Etapa 2:desative o MySQL Strict Mode
Dependendo do servidor e das configurações atuais, pode ser necessário editar um ou ambos os arquivos a seguir no servidor. Geralmente, as linhas de configuração relevantes estão apenas em uma delas, no entanto, pode estar em qualquer uma delas sem causar problemas; então geralmente é melhor verificar ambos.
Para editar os arquivos, você abrirá o arquivo com seu editor de linha de comando favorito. Neste exemplo, usamos 'vim'.
vim /usr/my.cnf
vim /etc/my.cnf
No vim, você pode pressionar “a” ou “i” para entrar no modo de inserção de texto; pressionar a tecla Escape (Esc) em seu teclado retorna ao modo de comando. Para uma atualização sobre a edição de arquivos com o vim, consulte nosso Tutorial para Novos Usuários:Visão Geral do Editor de Texto Vim.
Dentro de cada arquivo acima você estará procurando por uma linha com o seguinte conteúdo:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Se você encontrar uma linha semelhante à acima que está configurando a variável `sql_mode`, você precisará substituí-la pela seguinte linha para desabilitar o modo estrito do MySQL.
sql_mode=""
Depois que esse ajuste for feito, ou você tiver confirmado que o arquivo não precisa ser ajustado, você salvará e fechará o arquivo.
Etapa 3:reinicie o serviço MySQL
Finalmente, para tornar essas alterações efetivas, você precisará reiniciar o serviço MySQL, pois ele apenas lerá os arquivos de configuração quando for carregado inicialmente. Para forçar o MySQL a usar os novos arquivos de configuração, você fará o seguinte:
Para servidores CentOS 7:
systemctl restart mysql
Para CentOS 6 e anteriores:
/etc/init.d/mysql restart
Após emitir este comando no servidor o serviço MySQL será reiniciado e carregará as alterações feitas. Se todas as instruções foram seguidas e concluídas, o modo estrito do MySQL agora deve ser desabilitado.
Para verificar se o processo foi concluído corretamente, você pode executar o seguinte:
mysql -e "SELECT @@sql_mode;"
A saída pode ser semelhante à seguinte:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
Se você tiver alguma dúvida ou não se sentir à vontade para fazer essas alterações, sinta-se à vontade para entrar em contato com o Heroic Support®.