Ich habe die neueste Version von MySQL 5.7.x heruntergeladen und installiert. Standardmäßig war der Modus only_full_group_by aktiviert. Nachdem ich diesen Modus aktiviert hatte, gab die ursprüngliche group_by-Anweisung jedoch einen Fehler aus, sodass ich sie entfernte. Sobald only_full_group_by aktiviert ist, fühlt es sich so an, als ob group by dasselbe wie distinct wird, das nur die davon betroffenen Feldinformationen abrufen kann und nicht mit anderen, nicht davon betroffenen Feldern koexistieren kann. Auf diese Weise wird die Funktion von group by sehr eingeschränkt. Es ist besser, den Modus only_full_group_by zu aktivieren. Denn in MySQL gibt es eine Funktion: any_value(field) ermöglicht die Darstellung von nicht gruppierenden Feldern (was den gleichen Effekt hat wie das Deaktivieren des only_full_group_by-Modus). Spezifische Fehlermeldung:
1.1. 1. Überprüfen Sie den SQL-Modus
1.2. Der abgefragte Wert ist: NUR_VOLLSTÄNDIGE_GRUPPE_NUR, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTOMATISCHES_ERSTELLEN_BENUTZER, KEIN_ENGINE_SUBSTITUTION 2. Entfernen Sie ONLY_FULL_GROUP_BY und setzen Sie den Wert zurück.
2.1.3. Das Obige ändert den globalen SQL-Modus und gilt für neu erstellte Datenbanken. Bei einer bestehenden Datenbank müssen Sie unter den entsprechenden Daten folgenden Befehl ausführen:
Es gibt zwei allgemeine Lösungen: 1: Die Verwendung der Funktion any_value() auf einem Feld, das kein group by in einer SQL-Abfrageanweisung erfordert, ist nicht für Projekte geeignet, die bereits viele Funktionen entwickelt haben. Schließlich muss das ursprüngliche SQL geändert werden. 3.1. 2: Ändern Sie die Konfigurationsdatei my.cnf (my.ini unter Windows) und löschen Sie das Element only_full_group_by. Wenn MySQL unseres Projekts unter Ubuntu installiert ist, suchen Sie diese Datei und öffnen Sie sie. Sie enthält kein Konfigurationselement sql_mode, sodass Sie es nicht löschen können, selbst wenn Sie möchten. Natürlich gibt es auch andere Möglichkeiten. Öffnen Sie die MySQL-Befehlszeile und führen Sie den Befehl aus wählen Sie @@sql_mode; sql_mode=STRICT_TRANS_TABLES,KEIN_AUTO_CREATE_USER,KEIN_ENGINE_SUBSTITUTION; Hinweis: Verwenden Sie den Befehl Setzen Sie den SQL-Modus auf STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION. Auf diese Weise können Sie Konfigurationselemente in einer Sitzung ändern, ohne dass dies Auswirkungen auf andere Sitzungen hat. Wenn das oben Gesagte nicht klar genug ist, lesen Sie bitte die folgende Erklärung Rufen Sie die MySQL-Befehlszeile auf und führen Sie die folgenden beiden Anweisungen aus Setzen Sie den globalen SQL-Modus = "STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION". setze Sitzungs-SQL-Modus = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; Aber beim Neustart von MySQL wird das Problem wieder auftreten Suchen Sie my.cnf, bearbeiten Sie es, fügen Sie den folgenden Befehl an der entsprechenden Stelle ein, starten Sie den MySQL-Dienst neu, OK, kein Fehler gemeldet.
Beachten Sie, dass die sql_model-Anweisung im Inhaltsbereich [mysqld] platziert werden muss. Lösung für mysql5.7, das die Gruppierung nach nicht unterstützt 1. Überprüfen Sie sql_mode wählen Sie @@global.sql_mode Der abgefragte Wert ist: NUR_VOLLSTÄNDIGE_GRUPPE_NUR, STRENGE_TRANS_TABELLEN, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTOMATISCHES_ERSTELLEN_BENUTZER, KEIN_ENGINE_SUBSTITUTION 2. Entfernen Sie ONLY_FULL_GROUP_BY und setzen Sie den Wert zurück. Setzen Sie @@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'. mysql5.7+ in Linux verwendet group by und order by und meldet einen Fehler ONLY_FULL_GROUP_BY, ohne die Konfigurationsdatei zu ändern 1. Geben Sie mysql ein
Habe festgestellt, dass vorne ONLY_FULL_GROUP_BY steht 3. Geben Sie in der Befehlszeile ein 4. Beenden Sie MySQL und rufen Sie es erneut auf, um den SQL-Modus zu überprüfen. Das ist im Wesentlichen alles. |
<<: 13 JavaScript-Einzeiler, die Sie wie einen Experten aussehen lassen
>>: Detailliertes Tutorial zur VMware-Installation des Linux CentOS 7.7-Systems
Vorwort Docker erfreut sich seit zwei Jahren groß...
Da die Plattform weiter wächst, ist die Forschung...
1. SSH-Remoteverwaltung SSH ist ein sicheres Kana...
Inhaltsverzeichnis Wie erstelle ich einen Pod? We...
Das Layout des Textes unterliegt je nach Sprache ...
MySQL DDL-Anweisungen Was ist DDL, DML. DDL ist e...
Vor kurzem musste ich aus geschäftlichen Gründen ...
1. Docker ps listet Container auf 2. Docker cp ko...
1. Wenn ffmpeg Videodateien überträgt, können die...
Ich glaube, dass Studenten, die etwas über die Do...
Ich glaube, jeder macht sich oft Sorgen, ob er Bi...
Inhaltsverzeichnis 1. Übersicht der Seite 2. Infi...
Im vorherigen Artikel haben wir den lokalen Knote...
In Tomcat ist JSP nicht verstümmelt, aber HTML-Ch...
pthread_create-Funktion Funktionseinführung pthre...