Ich habe versehentlich den ONLY_FULL_GROUP_BY-Modus aktiviert, wie hier:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Wie kann ich ihn deaktivieren?
Ich habe versehentlich den ONLY_FULL_GROUP_BY-Modus aktiviert, wie hier:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Wie kann ich ihn deaktivieren?
Ab MySQL 5.7.x enthält der Standard-SQL-Modus ONLY_FULL_GROUP_BY.
(Vor 5.7.5
erkennt MySQL keine funktionale Abhängigkeit und ONLY_FULL_GROUP_BY
ist nicht standardmäßig aktiviert).
ONLY_FULL_GROUP_BY: Nichtdeterministische Gruppierungsanfragen werden abgelehnt
Weitere Details finden Sie in der Dokumentation von sql_mode
Sie können eine der folgenden Methoden verwenden, um den sql_mode zu ändern
Methode 1:
- Überprüfen Sie den Standardwert von sql_mode:
SELECT @@sql_mode
- Entfernen Sie ONLY_FULL_GROUP_BY
aus der Konsole durch Ausführen der folgenden Abfrage:
SET GLOBAL sql_mode=
(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Methode 2:
Greifen Sie auf phpMyAdmin zu, um Ihren sql_mode
zu bearbeiten
ONLY_FULL_GROUP_BY
zu entfernen und speichern Starten Sie den MySQL-Server neu
sudo service mysql restart
ODER
Melden Sie sich von phpMyAdmin
ab und melden Sie sich erneut an.
Dies ist, was ich auf Mysql Workbench durchgeführt habe:
Vorher habe ich den aktuellen Wert mit dem folgenden Befehl abgerufen
SELECT @@sql_mode
Später habe ich den ONLY_FULL_GROUP_BY-Schlüssel aus der Liste entfernt und den folgenden Befehl eingefügt
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
Unter MySQL 5.7 und Ubuntu 16.04 bearbeiten Sie die Datei mysql.cnf.
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Fügen Sie den sql_mode wie folgt hinzu und speichern Sie die Datei.
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Beachten Sie, dass ich in meinem Fall den Modus STRICT_TRANS_TABLES und den ONLY_FULL_GROUP_BY entfernt habe.
Dadurch wird die Moduskonfiguration dauerhaft gespeichert. Dies ist anders als wenn Sie nur den @@sql_mode über MySQL aktualisieren, da er beim Neustart der Maschine/des Dienstes zurückgesetzt wird.
Nachdem Sie die geänderte Konfiguration aktiviert haben, starten Sie den mysql-Dienst neu:
$ sudo service mysql restart
Versuchen Sie auf die mysql zuzugreifen:
$ mysql -u benutzername -p
Wenn es Ihnen gelingt, sich anzumelden und auf die MySQL-Konsole zuzugreifen, ist alles in Ordnung. Großartig!
ABER, wenn Sie wie ich den Fehler "unknown variable sql_mode" haben, was darauf hinweist, dass sql_mode eine Option für mysqld ist, müssen Sie zurückgehen, die Datei mysql.cnf erneut bearbeiten und [mysql]
in [mysqld]
ändern. Starten Sie den MySQL-Dienst neu und machen Sie einen letzten Test, um sich in der MySQL-Konsole anzumelden. Hier ist es!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.