web-dev-qa-db-fra.com

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

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

Si activé, pour quels modes et comment le désactiver.

Si éteint puis comment.

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

27
Ipsita Rout

-> STRICT_TRANS_TABLES est responsable de la configuration du mode strict MySQL.

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

SHOW VARIABLES LIKE 'sql_mode';

Si l'une des valeurs est STRICT_TRANS_TABLES , alors le mode strict est activé, sinon pas .

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

Par conséquent, le mode strict est activé dans mon cas, l'une des valeurs est STRICT_TRANS_TABLES .

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

set global sql_mode='';

[ou n'importe quel mode sauf STRICT_TRANS_TABLES. Ex: set global sql_mode = 'NO_ENGINE_SUBSTITUTION';]

-> To again enable strict mode exécute le sql ci-dessous:

set global sql_mode='STRICT_TRANS_TABLES';
57
Ipsita Rout

Pour le changer de manière permanente dans Ubuntu, procédez comme suit:

dans la ligne de commande ubuntu

Sudo nano /etc/mysql/my.cnf

Puis ajoutez ce qui suit

[mysqld]
sql_mode=
32
DragonFire

Premièrement, 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 défini à l'exception des 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.

6
Kasumi Gunasekara

Vérifiez la valeur avec 

SELECT @@GLOBAL.sql_mode;

puis supprimez le 'STRICT_TRANS_TABLES' de la valeur en utilisant cette commande:

SET @@GLOBAL.sql_mode=''
1
Toundrake

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

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
1
Eric Korolev

Pour le changer définitivement dans Windows (10), éditez le fichier my.ini. Pour trouver le fichier my.ini, examinez le chemin d'accès sur le serveur Windows. Par exemple. pour mon instance MySQL 5.7, le service est MYSQL57 et, dans les propriétés de ce service, le chemin d'accès à l'exécutable est: 

"C:\Programmes\MySQL\Serveur MySQL 5.7\bin\mysqld.exe" --defaults-file = "C:\ProgramData\MySQL\Serveur MySQL 5.7\my.ini" MySQL57

C'est à dire. éditez le fichier my.ini dans C:\ProgramData\MySQL\MySQL Server 5.7\. Notez que C:\ProgramData\ est un dossier caché dans Windows (10). Mon fichier a les lignes d'intérêt suivantes:

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Supprimez STRICT_TRANS_TABLES, de cette ligne en mode SQL, enregistrez le fichier et redémarrez le service MYSQL57. Vérifiez le résultat en exécutant SHOW VARIABLES LIKE 'sql_mode'; dans une (nouvelle) fenêtre du client en ligne de commande MySQL.

(J'ai trouvé les autres réponses et documents sur le Web utiles, mais aucun ne semble vous dire où trouver le fichier my.ini dans Windows.)

0
FreeText