3 votes

Mode strict de MySQL activé

Après la mise à jour vers MySQL 5.5 depuis la Remi-DB (CentOS 6), nous avons rencontré un problème où, à chaque redémarrage, notre serveur SQL se remet en mode strict :

mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode                          |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

Je lance ensuite la commande :

    mysql> SET GLOBAL sql_mode="";
Query OK, 0 rows affected (0.00 sec)

Et cela fonctionne bien pour la session, mais au redémarrage, cette modification est perdue (j'ai également essayé de définir le sqlmode "SET SESSION").

Je tiens également à préciser que j'ai essayé de le faire dans le cadre de la my.cnf également.

La seule solution viable consiste à coder un fichier d'initialisation pour exécuter le programme SET GLOBAL sql_mode au redémarrage, mais c'est lourd, ennuyeux et déraisonnable, il doit y avoir un moyen de faire en sorte que cela fonctionne dès le départ.

J'ai essayé de réinstaller le serveur SQL en vain. (J'ai cependant récupéré les données à partir d'une sauvegarde, car il s'agit d'un serveur de production).

10voto

Hakan Points 467

Cela m'est arrivé aussi avec Percona Server v5.5.30-30.1-log.

S http://bugs.mysql.com/bug.php?id=68643

et vérifiez la présence d'un fichier /usr/my.cnf ou similaire ($MYSQL_HOME/my.cnf) qui aurait pu être créé par mysql_install_db.

Cela annulait notre paramètre sql_mode dans tous nos autres fichiers de configuration.

3voto

yanychar Points 562

Ajoutez ceci dans votre my.cnf et redémarrez MySQL. Assurez-vous qu'il n'y a pas d'autre ligne après celle-ci pour l'écraser.

Remplacer sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

avec

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Parfois, l'ajout de lignes en dessous peut également fonctionner. Essayez d'abord ce qui précède et si cela ne fonctionne pas, essayez ces lignes.

sql-mode=""

ou

sql-mode="TRADITIONAL"

0voto

Vyacheslav Points 103

Je sais que c'est vieux, mais au cas où quelqu'un en aurait besoin :

J'ai obtenu ce résultat avec MySQL Server 5.6 sur Windows 7 x64.

Il s'avère qu'il charge un fichier my.ini ici :

C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

Même si MySQL a été installé et fonctionne à partir d'ici :

C:\Program Files\MySQL\MySQL Server 5.6

La modification du mode sql dans ProgramData ini par ce qui suit, puis le redémarrage de MySql ont résolu le problème :

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X