876 Stimmen

Deaktiviere NUR_FULL_GROUP_BY

Ich habe versehentlich den ONLY_FULL_GROUP_BY-Modus aktiviert, wie hier:

SET sql_mode = 'ONLY_FULL_GROUP_BY';

Wie kann ich ihn deaktivieren?

23voto

Ankit Jindal Punkte 2562

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

  • Melden Sie sich bei phpMyAdmin an und öffnen Sie localhost
  • Klicken Sie auf Variablen oben im Menü und suchen Sie nach sql_mode
  • Klicken Sie auf die Schaltfläche "Bearbeiten", um ONLY_FULL_GROUP_BY zu entfernen und speichern sql mode settings in phpMyAdmin

Starten Sie den MySQL-Server neu

 sudo service mysql restart

ODER

Melden Sie sich von phpMyAdmin ab und melden Sie sich erneut an.

21voto

Nilesh Patil Punkte 41

Um das ONLY_FULL_GROUP_BY nur mithilfe der folgenden Abfrage zu deaktivieren.

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Und um das ONLY_FULL_GROUP_BY zu aktivieren, verwenden Sie die folgende Abfrage.

SET sql_mode = 'ONLY_FULL_GROUP_BY';

18voto

Shiran Gabriel Punkte 430

Wenn Sie WAMP verwenden. Klicken Sie mit der linken Maustaste auf das WAMP-Symbol und gehen Sie dann zu MySQL -> MySQL-Einstellungen -> sql-mode und wählen Sie dann sql-mode -> Benutzermodus aus

Schau dir dieses Bild an

17voto

Matt Vegas Punkte 403

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'

15voto

Alexandre Ribeiro Punkte 1254

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.com

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.

Powered by:

X