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.
-> 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';
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=
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.
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=''
Vous pouvez vérifier sa valeur locale et globale avec:
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
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.)