Ich versuche, sql_mode in mysql festzulegen, aber es wird ein Fehler ausgegeben.
Befehl:
set global sql_mode='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'
Ist dies nicht der richtige Weg, um mehrere Modi einzustellen? Was sind die Vorteile der Einstellung von Sitzungs- und globalen Modi? was wird bevorzugt? Ich habe verschiedene Benutzer, die versuchen, die Datenbank mit verschiedenen UNC-Werten zu aktualisieren, und habe den Sitzungsmodus auf 'NO_BACKSLASH_ESCAPES' gesetzt. Ich denke, es wäre sinnvoll, einen gloabl-Modus dafür zu erstellen. Macht das Sinn?
Lass es mich wissen, bitte.
Vielen Dank.
Antworten:
Übrigens, wenn Sie in MySQL Globals setzen:
Dadurch wird es nicht dauerhaft eingestellt und nach jedem Neustart zurückgesetzt.
Sie sollten dies also in Ihrer Konfigurationsdatei
/etc/mysql/my.cnf
festlegen (z. B. im Abschnitt [mysqld]), damit die Änderungen nach dem Neustart von MySQL wirksam bleiben:Konfigurationsdatei: /etc/mysql/my.cnf
UPDATE: Neuere Versionen von MySQL (z. B. 5.7.8 oder höher) erfordern möglicherweise eine etwas andere Syntax:
Stellen Sie sicher, dass zwischen
sql-mode
keinem Unterstrich ein Bindestrich steht und dass die Modi in doppelten Anführungszeichen stehen.Verweisen Sie immer auf die MySQL-Dokumente für Ihre Version, um die Optionen für den SQL-Modus anzuzeigen .
quelle
5.7.20
und für den Fallmysql.ini
, einen Unterstrich zu verwenden und die Anführungszeichen zu vergessen, funktioniert dassql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Ich habe es gelöst.
Der richtige Modus ist:
quelle
Festlegen des SQL-Modus dauerhaft mithilfe der MySQL-Konfigurationsdatei.
In meinem Fall muss ich die Datei ändern,
/etc/mysql/mysql.conf.d/mysqld.cnf
wiemysql.conf.d
in enthalten/etc/mysql/my.cnf
. Ich ändere dies unter [mysqld]ONLY_FULL_GROUP_BY
Ich habe gerade den SQL-Modus entfernt, weil er ein Problem verursacht hat.Ich verwende
ubuntu 16.04
,php 7
und mysql --version gib mir diesesmysql Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using EditLine wrapper
Nach dieser Änderung führen Sie die folgenden Befehle aus
Überprüfen Sie nun die SQL-Modi anhand dieser Abfrage,
SELECT @@sql_mode
und Sie sollten die gerade festgelegten Modi erhalten.quelle
In Konfigurationsdatei kopieren:
/etc/mysql/my.cnf OR /bin/mysql/my.ini
MySQL
Neustart.Oder du kannst es auch tun
MySQL
Neustart.quelle
sql_mode
stattsql-mode
.Für jemanden, der diesen Fehler für MySQL 8 googelt.
MySQL 8.0.11 entfernt den 'NO_AUTO_CREATE_USER' aus dem SQL-Modus.
Von hier genommen
So
sql_mode
kann es sein:Wenn Sie Docker verwenden, können Sie docker-compose.yml den nächsten Befehl hinzufügen
quelle
Verwenden Sie für temporäre Änderungen den folgenden Befehl
Für dauerhafte Änderungen: Gehen Sie zur Konfigurationsdatei /etc/my.cnf oder /etc/mysql/mysql.conf.d/mysqld.cnf und fügen Sie die folgenden Zeilen hinzu. Starten Sie dann den MySQL-Dienst neu
quelle
Greifen Sie als Administrator auf die Datenbank zu (root möglicherweise).
Überprüfen Sie den aktuellen SQL_Mode
Um einen neuen sql_mode festzulegen, beenden Sie die Datenbank und erstellen Sie eine Datei
mit Ihrem sql_mode Inhalt
Starten Sie MySQL neu
Wir erstellen eine Datei im Ordner /etc/mysql/conf.d/, da in der Hauptkonfigurationsdatei /etc/mysql/my.cnf der Befehl so geschrieben ist, dass er alle Einstellungsdateien aus dem Ordner / etc / mysql / conf enthält. d /
quelle
In meinem Fall muss ich die Datei
/etc/mysql/mysql.conf.d/mysqld.cnf
ändern, ändern Sie dies unter [mysqld
]Fügen Sie diese Zeile in den
mysqld
Abschnitt [ ] einquelle
Ich hatte gerade ein ähnliches Problem, bei dem MySQL (5.6.45)
sql_mode
von keiner Konfigurationsdatei akzeptiert wurde .Die Lösung bestand darin
init_file = /etc/mysql/mysql-init.sql
, der Konfigurationsdatei etwas hinzuzufügen und dort auszuführenSET GLOBAL sql_mode = '';
.quelle
Wenn jemand es nur für die aktuelle Sitzung festlegen möchte, verwenden Sie den folgenden Befehl
quelle
Überprüfen Sie die Dokumentation von sql_mode
Methode 1:
Überprüfen Sie den Standardwert von sql_mode:
Methode 2:
Greifen Sie auf phpmyadmin zu, um Ihre zu bearbeiten
sql_mode
Starten Sie den Server neu, nachdem Sie die oben genannten Schritte ausgeführt haben
quelle
In meinem Fall MySQL und Ubuntu 18.04
Ich habe es mit diesem Befehl dauerhaft eingestellt
Fügen Sie die Zeile nach der Konfiguration hinzu. Siehe Beispiel im Bild unten.
Siehe Referenz zu verfügbaren SQL-Modi und Dokumentation
Hoffe das hilft :-)
quelle
quelle