Ich möchte wissen, wie man prüft, ob der strikte MySQL-Modus in localhost (xampp) aktiviert oder deaktiviert ist.
Wenn an, für welche Modi und wie aus.
Wenn aus, dann wie einschalten.
Ich habe bereits http://dev.mysql.com/doc/refman/5.7/de/sql-mode.html#sql-mode-full und https://mariadb.com/kb/de gefolgt/mariadb/sql_mode/ und andere verwandte Seiten. Ich habe jedoch keine genaue Antwort auf meine Frage erhalten.
-> STRICT_TRANS_TABLES ist für die Einstellung des strengen MySQL-Modus verantwortlich.
-> zur Überprüfung, ob der Strict-Modus aktiviert ist oder nicht, führt die folgende SQL-Anweisung aus:
SHOW VARIABLES LIKE 'sql_mode';
Wenn einer der Werte STRICT_TRANS_TABLES ist, ist der strikte Modus aktiviert, ansonsten nicht . In meinem Fall gab es den Wert an
+--------------+------------------------------------------+
|Variable_name |Value |
+--------------+------------------------------------------+
|sql_mode |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION|
+--------------+------------------------------------------+
Daher ist der strikte Modus in meinem Fall aktiviert, da einer der Werte STRICT_TRANS_TABLES ist.
-> Zum Deaktivieren strict-Modus führen Sie die folgende SQL aus:
set global sql_mode='';
[oder jeder Modus außer STRICT_TRANS_TABLES. Beispiel: set global sql_mode = 'NO_ENGINE_SUBSTITUTION';]
-> Um den enable strict-Modus erneut auszuführen, führen Sie das folgende SQL aus:
set global sql_mode='STRICT_TRANS_TABLES';
Um es dauerhaft in Ubuntu zu ändern, gehen Sie wie folgt vor
in der Ubuntu-Befehlszeile
Sudo nano /etc/mysql/my.cnf
Dann füge folgendes hinzu
[mysqld]
sql_mode=
Prüfen Sie zunächst, ob der strikte Modus in mysql aktiviert ist oder nicht.
SHOW VARIABLES LIKE 'sql_mode';
Wenn Sie es deaktivieren möchten:
SET sql_mode = '';
oder jeder andere Modus kann eingestellt werden, mit Ausnahme des folgenden ..__ Um den strikten Modus zu aktivieren:
SET sql_mode = 'STRICT_TRANS_TABLES';
Sie können das Ergebnis von der ersten mysql-Abfrage aus überprüfen.
Überprüfen Sie den Wert mit
SELECT @@GLOBAL.sql_mode;
entfernen Sie anschließend den Befehl 'STRICT_TRANS_TABLES' mit folgendem Befehl aus dem Wert:
SET @@GLOBAL.sql_mode=''
Sie können den lokalen und globalen Wert davon überprüfen:
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
Um sie dauerhaft in Windows (10) zu ändern, bearbeiten Sie die my.ini
-Datei. Um die Datei my.ini zu finden, sehen Sie sich den Pfad auf dem Windows-Server an. Z.B. Für meine MySQL 5.7-Instanz lautet der Dienst MYSQL57
. In den Eigenschaften dieses Dienstes lautet der Pfad zur ausführbaren Datei:
"C:\Programme\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file = "C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
Das heißt Bearbeiten Sie die my.ini
-Datei in C:\ProgramData\MySQL\MySQL Server 5.7\
. Beachten Sie, dass C:\ProgramData\
ein versteckter Ordner in Windows (10) ist. Meine Datei enthält folgende Zeilen:
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Entfernen Sie STRICT_TRANS_TABLES,
aus dieser SQL-Modus-Zeile, speichern Sie die Datei und starten Sie den MYSQL57-Dienst neu. Überprüfen Sie das Ergebnis, indem Sie SHOW VARIABLES LIKE 'sql_mode';
in einem (neuen) MySQL Command Line Client-Fenster ausführen.
(Ich fand die anderen Antworten und Dokumente im Web nützlich, aber Sie scheinen Ihnen nicht zu sagen, wo Sie die my.ini-Datei in Windows finden können.)
In meinem Fall muss ich hinzufügen:
sql_mode="STRICT_TRANS_TABLES"
unter [mysqld]
in der Datei my.ini
gelegen in C:\xampp\mysql\bin
.