Como desativar o modo MySQL Strict

Alguns Conteúdo Sistemas de gerenciamento como Typo, Contao, Contenido ou outros sistemas têm problemas com o MySQL 5.1 disponível no Modo Restrito. Esta tem sido a configuração padrão desde a versão 5.7.

Para que se possa também usar estes sistemas CMS ainda há a possibilidade de desligar o modo estrito do lado do servidor. Naturalmente, isto é recomendado apenas condicionalmente.

O que o modo Estrito faz?

O modo rígido do MySQL/MariaDB controla como os valores inválidos ou ausentes são tratados nas consultas de alteração de dados, incluindo declarações INSERT, UPDATE, e CREATE.

Inválido ou ausente Dados levam a avisos ou erros quando a consulta SQL é executada. Se o modo Scrict for desligado, as consultas inválidas ou valores em falta são ajustadas e um simples aviso é emitido. Isto pode levar a resultados inesperados.

Um exemplo seria um limite de caracteres. Se o modo Estrito for desligado, o excesso de caracteres será cortado para que ele se ajuste.

Por que isso só ocorre com alguns sistemas CMS?

Só se pode especular. Provavelmente, o código é tão extenso que ninguém consegue descobri-lo. Em um sistema de gerenciamento de conteúdo trabalham muitas pessoas, às vezes elas trazem funções individuais que depois não são mais consideradas durante anos. Desde que não ocorram problemas graves, não é tão ruim assim.

Com um sistema como o whmcs, que também é afetado, a situação é bem diferente. Se dados importantes forem truncados, ocorrerão atribuições incorretas. Isto pode ser problemático no caso de um acordo.

Onde estas instruções podem ser aplicadas?

As instruções referem-se aos sistemas Linux com MySQL 5.6/5.7 ou MariaDB 10.1 e superior onde o Modo Estrito está ativo.

O acesso à raiz é necessário para fazer as mudanças. Nossas instruções sempre se referem a Centos Linux. Com outras distribuições, os arquivos de configuração podem ser localizados em outros diretórios.

Passo 1: Criar backups

Ao editar arquivos, você deve sempre fazer um backup. É muito fácil demais apagar algo sem querer.

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

O comando cria um arquivo my.cnf.strict.bak a partir do my.cnf no mesmo diretório.

Passo 2: Desativar o modo MySQL Strict

O arquivo normalmente não contém sql_mode=... portanto, a seguinte linha deve ser adicionada à seção [mysqld] :

sql_mode=""".

Passo 3: Reinicie o serviço MySQL

Após a edição do arquivo, o serviço deve ser reiniciado para aplicar as mudanças.

systemctl restart mariadb

Após o reinício do serviço, você pode verificar a configuração executando o seguinte comando. Aqui como um exemplo com a senha em um Servidor Plesk. Alternativamente, com a raiz e a senha.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"

O seguinte retorno deve então aparecer:

+————+

| @@sql_mode |

+————+

| |

+————+

Artigos atuais