76 votes

Comment activer/désactiver le mode strict de MySQL en localhost (xampp) ?

Je veux savoir comment vérifier si le mode strict de MySQL est activé ou désactivé dans localhost(xampp).

Si elle est activée, pour quels modes et comment la désactiver.

Si elle est désactivée, comment la mettre en marche.

J'ai déjà suivi http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-full y https://mariadb.com/kb/en/mariadb/sql_mode/ et d'autres sites connexes également. Mais je n'ai pas obtenu de réponse précise à ma question.

1 votes

Si vous voulez vérifier le mode strict, utilisez : SELECT @@sql_mode

1 votes

Cette requête retourne votre sql_mode et renvoie un blanc s'il est désactivé

0 votes

Vérifiez ceci comme [ [shopplugin.net/kb/mysql-strict-mode-issues/]](https://shopplugin.net/kb/mysql-strict-mode-issues/]) pour l'activer ou la désactiver.

117voto

Ipsita Rout Points 628

-> TABLES_TRANS_ STRICTES est responsable de la définition du mode strict de MySQL.

-> Pour vérifier si le mode strict est activé ou non, exécutez le sql ci-dessous :

SHOW VARIABLES LIKE 'sql_mode';

Si l'une des valeurs est TABLES_TRANS_ STRICTES alors le mode strict est activé, sinon non. Dans mon cas, cela a donné

+--------------+------------------------------------------+ 
|Variable_name |Value                                     |
+--------------+------------------------------------------+
|sql_mode      |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION|
+--------------+------------------------------------------+

Le mode strict est donc activé dans mon cas, car l'une des valeurs est TABLES_TRANS_ STRICTES .

-> Pour désactiver en mode strict, exécutez le sql ci-dessous :

set global sql_mode='';

[ou tout autre mode sauf STRICT_TRANS_TABLES. Ex : set global sql_mode='NO_ENGINE_SUBSTITUTION' ;]

->Encore une fois activer en mode strict, exécutez le sql ci-dessous :

set global sql_mode='STRICT_TRANS_TABLES';

2 votes

Si vous redémarrez le serveur mysql, les paramètres changent à nouveau. Y a-t-il un moyen de changer cela de façon permanente ?

1 votes

Vous pouvez le faire dans le fichier de configuration du serveur. Voici un exemple de ce que cela donnerait : [mysqld] sql_mode="STRICT_TRANS_TABLES" L'emplacement du fichier varie en fonction de votre système d'exploitation, pour savoir où le trouver, cliquez ici : dev.mysql.com/doc/refman/5.7/fr/option-files.html

8 votes

Mon commandement set global sql_mode='' ne fonctionne pas (ma version est 5.7), mais set sql_mode='' fait. Quelle est l'explication ?

55voto

DragonFire Points 496

Pour le changer en permanence sous ubuntu, faites ce qui suit

dans la ligne de commande ubuntu

sudo nano /etc/mysql/my.cnf

Ajoutez ensuite ce qui suit

[mysqld]
sql_mode=

4 votes

Sur 16.04 dans /etc/mysql/mysql.conf.d/mysqld.cnf

16voto

Kasumi Gunasekara Points 195

Tout d'abord, vérifiez si le mode strict est activé ou non dans mysql en utilisant :

     SHOW VARIABLES LIKE 'sql_mode';

Si vous voulez le désactiver :

     SET sql_mode = '';

ou tout autre mode peut être réglé, sauf les suivants. Pour activer le mode strict :

     SET sql_mode = 'STRICT_TRANS_TABLES';

Vous pouvez vérifier le résultat de la première requête mysql.

0 votes

Pouvez-vous l'ajouter à une base de données spécifique ou globalement ?

7voto

Toundrake Points 11

Vérifiez la valeur avec

SELECT @@GLOBAL.sql_mode;

puis effacez le @@global.sql_mode en utilisant cette commande :

SET @@GLOBAL.sql_mode=''

5 votes

Vous n'enlevez pas STRICT_TRANS_TABLES mais vous effacez complètement sql_mode. C'est une différence importante.

2voto

Eric Korolev Points 61

Vous pouvez vérifier sa valeur locale et globale avec :

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X