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?
Ich habe festgestellt, dass @Eyo Okon Eyo-Lösung funktioniert, solange der MySQL-Server nicht neu gestartet wird, dann werden die Standardeinstellungen wiederhergestellt. Hier ist eine dauerhafte Lösung, die bei mir funktioniert hat:
Um einen bestimmten SQL-Modus zu entfernen (in diesem Fall ONLY_FULL_GROUP_BY), finden Sie den aktuellen SQL-Modus:
SELECT @@GLOBAL.sql_mode;
Kopieren Sie das Ergebnis und entfernen Sie davon, was Sie nicht benötigen (ONLY_FULL_GROUP_BY)
zum Beispiel:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
bis
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
erstellen und öffnen Sie diese Datei:
/etc/mysql/conf.d/disable_strict_mode.cnf
und schreiben Sie in sie Ihren neuen SQL-Modus:
[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
Starten Sie MySQL neu:
sudo service mysql restart
Oder Sie können ANY_VALUE()
verwenden, um die Ablehnung des ONLY_FULL_GROUP_BY-Werts zu unterdrücken, Sie können hier mehr darüber lesen
Danke @cwhisperer. Ich hatte das gleiche Problem mit Doctrine in einer Symfony-App. Ich habe einfach die Option zu meiner config.yml hinzugefügt:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
Dies hat bei mir gut funktioniert.
Am:
Tun:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Kopieren und einfügen:
[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
Am Ende der Datei einfügen
$ sudo service mysql restart
Die MySQL-Dokumentation gibt auch die folgenden Methoden an:
sql-mode=""
in einer Optiondatei wie z. B. my.cnf (Unix-Betriebssysteme) oder my.ini (Windows) fest.--sql-mode=""
.*Wo eine Liste verschiedener Modi ist, die durch Kommas getrennt sind.
Um den SQL-Modus ausdrücklich zu löschen, setzen Sie ihn auf einen leeren String mit --sql-mode=""
auf der Befehlszeile oder sql-mode=""
in einer Optiondatei.
Ich habe die sql-mode=""
-Option zu /etc/my.cnf
hinzugefügt und es hat funktioniert.
Diese SO-Lösung diskutiert Möglichkeiten, herauszufinden, welche my.cnf-Datei von MySQL verwendet wird.
Vergessen Sie nicht, MySQL nach Änderungen neu zu starten.
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.