Syntaxfehler oder Zugriffsverletzung: 1055 Der Ausdruck Nr. 8 der SELECT-Liste befindet sich nicht in der GROUP BY-Klausel und enthält eine nicht aggregierte Spalte

8

Ich habe das CakePHP 3.x "Bookmaker Tutorial" ausprobiert und bin der Anleitung Schritt für Schritt gefolgt. Leider bekomme ich am Ende des ersten Kapitels den angehängten Fehler:

%Vor%

Außerdem bekomme ich die Informationen, um meine "BookmarksTags" -Tabelle zu überprüfen, aber ich muss sie vorher nicht erstellen. Ich bin ein bisschen verwirrt.

%Vor%

Ich google bereits mein Problem und ich fand Informationen, um die "my.cnf" mit einer zusätzlichen Zeile zu aktualisieren. Ich versuche es schon, aber nichts passiert. Ich überprüfe auch die Rechtschreibung und lade das "bookmarker-tutorial" von github herunter, aber ich erhalte immer noch diesen Fehler oben.

Ich benutze MySQL 5.7.11 und PHP 5.6.14.

    
weristsam 25.03.2016, 22:08
quelle

5 Antworten

17

Dies ist eine neue Sache in MySQL 5.7 und ist eine Warnung, dass Ihre Abfrage nicht eindeutig ist.

Betrachten Sie die folgende Tabelle:

%Vor%

Wenn Sie die folgende Abfrage ausgeführt haben:

%Vor%

Dann wird die Spalte name für die Gruppierung verwendet. Beachten Sie, dass age möglicherweise mehrere Werte hat, also "nicht aggregiert" ist. Sie müssen etwas tun, um diese Werte zu reduzieren.

Das Verhalten in 5.6 und vorhergehend war, nur das erste auszuwählen, abhängig von der Sortierreihenfolge, obwohl dies manchmal unvorhersehbar war und fehlschlagen würde. In 5.7 verhindern sie dich von vornherein.

Die Lösung besteht darin, auch hier zu gruppieren oder einen Aggregatoperator wie MIN() darauf anzuwenden.

    
tadman 26.03.2016 00:28
quelle
5

Ich benutze Laravel 5.4 und sehe das gleiche Problem.
Ich versuche, strict in false auf config/database.php zu setzen und es funktioniert.

%Vor%

Es ist jedoch besser, die SQL-Abfrage zu bearbeiten als die Warnung zu unterdrücken.

    
Fendi Setiawan 04.07.2017 12:13
quelle
1

Ich bin gerade über dasselbe Problem gestolpert.
Eine einfache Möglichkeit, das Lernprogramm "arbeiten" zu lassen, ohne die Abfrage zu ändern, könnte sein, sql_mode in config/app.php :

zurückzusetzen %Vor%

Während dies die Dinge funktionieren lassen sollte, wird es wahrscheinlich in echten Fällen nicht empfohlen.

    
Remka 05.11.2016 11:45
quelle
0

Dies könnte das Problem in Bezug auf eine neuere Version von MySQL sein, wie Sie sagten, dass Sie MySQL 5.7.11 verwenden Also, um dieses Problem für alle Ihre Websites zu lösen, sehen Sie dies

Ссылка

die Antwort von der Community, um die Zeile unter

hinzuzufügen %Vor%

in /etc/mysql/my.cnf Datei & amp; es zu speichern; und nach dem Neustart des Servers

%Vor%

Würde die Arbeit machen

    
Jaya Parwani 23.08.2017 12:53
quelle
0

Zusätzlich zu Tadmans Kommentar sollten Sie für die von Ihnen verfolgte Anleitung Ihre sql-select-Abfrage sowohl mit Bookmarks.id als auch mit BookmarksTags.tag_id statt nur mit der Datei "Bookmarks.id" gruppieren.

Um dies zu tun, in der BookmarksTable.php Datei, Zeile

%Vor%

sollte wie

aussehen %Vor%     
Tahi Reu 12.09.2017 13:13
quelle

Tags und Links