Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como desativar o modo estrito do MySQL


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®.