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?
Lösung 1: Entfernen Sie ONLY_FULL_GROUP_BY aus der MySQL-Konsole
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Weitere Informationen finden Sie hier
Beachten Sie, dass diese Einstellung NICHT über Neustarts hinweg bestehen bleibt, verwenden Sie dann
mysql > SET PERSIST sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Lösung 2: Entfernen Sie ONLY_FULL_GROUP_BY aus phpMyAdmin
Um Ihre aktuellen MySQL-Einstellungen beizubehalten und ONLY_FULL_GROUP_BY
zu deaktivieren, empfehle ich, Ihren phpMyAdmin oder den von Ihnen verwendeten Client zu besuchen und Folgendes einzugeben:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
Dann kopieren Sie das Ergebnis in Ihre my.ini
Datei.
Mint: sudo nano /etc/mysql/my.cnf
Ubuntu 16 und höher: sudo nano /etc/mysql/my.cnf
Ubuntu 14-16: /etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
kann lange Texte enthalten, die standardmäßig gekürzt werden. Stellen Sie sicher, dass Sie den gesamten Text kopieren!Alte Antwort:
Wenn Sie den Fehler "Ausdruck #N der SELECT-Liste ist nicht in der GROUP BY-Klausel und enthält eine nicht aggregierte Spalte 'db.table.COL', die nicht funktional abhängig von Spalten in der GROUP BY-Klausel ist; dies ist unvereinbar mit sql_mode=only_full_group_by" permanent deaktivieren möchten, führen Sie die folgenden Schritte aus:
sudo nano /etc/mysql/my.cnf
Fügen Sie dies am Ende der Datei hinzu
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sudo service mysql restart
, um MySQL neu zu starten
Dies wird ONLY_FULL_GROUP_BY
für ALLE Benutzer deaktivieren
Vorsicht beim Verwenden von
SET sql_mode = ''
Dies löscht tatsächlich alle aktuell aktivierten Modi. Wenn Sie nicht mit anderen Einstellungen durcheinander kommen möchten, sollten Sie zuerst einen
SELECT @@sql_mode
durchführen, um eine kommagetrennte Liste der aktivierten Modi zu erhalten, und es dann auf diese Liste ohne die ONLY_FULL_GROUP_BY
Option setzen.
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
Nur einen Modus zu sql_mode hinzufügen, ohne vorhandene zu entfernen:
SET sql_mode=(SELECT CONCAT(@@sql_mode,','));
Nur einen bestimmten Modus aus sql_mode entfernen, ohne andere zu entfernen:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'',''));
_In Ihrem Fall, wenn Sie nur den ONLY_FULL_GROUP_BY
Modus entfernen möchten, verwenden Sie den folgenden Befehl:_
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Referenz: http://johnemb.blogspot.com/2014/09/adding-or-removing-individual-sql-modes.html
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.