Qual é a maneira correta de reverter o modo restrito do Mysql 5.7 de volta para como ele estava em 5.6?

7

Eu atualizei nosso servidor para o Ubuntu 16, que inclui o Mysql 5.7 e, por padrão, o modo Strict está ativado (embora não haja entrada para ele em nenhum dos arquivos de configuração).

Estamos tendo problemas ao importar bancos de dados que estavam em produção no mysql 5.6 e anterior, e é por causa do modo estrito. Por padrão, aqui está o que está ativado:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY

Como posso configurar o mysql 5.7 para funcionar exatamente como em 5.6 ou para que os bancos de dados de 5.6 sejam compatíveis com 5.7?

    
por user658182 13.08.2016 / 16:00

2 respostas

24

Para desativar o modo SQL estrito, conecte o SSH ao seu servidor como root e crie este arquivo:

/etc/mysql/conf.d/disable_strict_mode.cnf

Abra o arquivo e insira estas duas linhas:

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Reinicie o MySQL com este comando:

sudo service mysql restart

Esta alteração desativa duas configurações do modo SQL, STRICT_TRANS_TABLES e ONLY_FULL_GROUP_BY , que foram adicionadas no MySQL 5.7 e causam problemas para alguns aplicativos mais antigos.

Confirmando que o modo estrito de SQL está desativado

Você pode confirmar que o modo SQL restrito está desabilitado executando este comando como root :

 sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

Se o modo estrito estiver desativado, você não verá nenhuma saída desse comando.

Se a desativação do modo estrito causar algum problema para você, você poderá ativá-lo novamente excluindo esse arquivo e reiniciando o MySQL novamente.

Fonte: Como desabilitar o modo SQL estrito no MySQL 5.7

    
por Bilal 13.08.2016 / 16:15
0

Para modificar sql_mode, abra /etc/mysql/mysql.conf.d/mysqlid.cnf

Adicionar sob [musqld] sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    
por Rama Shankar Singh 24.01.2018 / 12:02

Tags