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 |
+————+
| |
+————+