web-dev-qa-db-fra.com

Quelle est la bonne façon de rétablir le mode strict de Mysql 5.7 pour revenir à la version 5.6?

J'ai mis à niveau notre serveur vers Ubuntu 16, qui inclut Mysql 5.7 et, par défaut, le mode strict est activé (bien qu'il n'y ait aucune entrée dans les fichiers de configuration).

Nous avons des problèmes pour importer des bases de données qui étaient en production sous mysql 5.6 et versions antérieures, à cause du mode strict. Par défaut, voici ce qui est activé:

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

Comment configurer mysql 5.7 pour qu'il fonctionne exactement comme dans 5.6 ou que les bases de données de 5.6 soient compatibles avec 5.7?

10
user658182

Pour désactiver le mode SQL strict, SSH sur votre serveur sous le nom root et créez ce fichier:

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

Ouvrez le fichier et entrez ces deux lignes:

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

Redémarrez MySQL avec cette commande:

Sudo service mysql restart

Cette modification désactive deux paramètres de mode SQL, STRICT_TRANS_TABLES et ONLY_FULL_GROUP_BY, qui ont été ajoutés à MySQL 5.7 et causent des problèmes pour certaines applications plus anciennes.

Confirmation que le mode SQL strict est désactivé

Vous pouvez confirmer que le mode SQL strict est désactivé en exécutant cette commande sous le nom root:

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

Si le mode strict est désactivé, vous ne verrez aucun résultat de cette commande.

Si la désactivation du mode strict vous pose problème, vous pouvez le réactiver en supprimant ce fichier et en redémarrant MySQL.

Source: Comment désactiver le mode SQL strict dans MySQL 5.7

33
Bilal

Définissez sql_mode dans /etc/mysql/mysql.conf.d/mysqld.cnf sans STRICT_TRANS_TABLES.

Ajouter sous [mysqld]:

sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
0
Rama Shankar Singh