Dawid Panfil

Jak rozwiązać błąd ONLY_FULL_GROUP_BY

Zapewne niedawno przeszedłeś na MySQL 5.7, który domyślnie jest bardziej restrykcyjny jeśli chodzi o grupowanie. Zapewne skoro tu trafiłeś dostałeś błąd podobny do poniższego:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'users_groups.group_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Rozwiązanie jest następujące. Zalogowani do MySQL (czy to konsolą, phpMyAdmin, Workbeanch czy innym programem) wpisujemy

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

Problem tego rozwiązania jest taki, że to działa tylko chwilowo. Jeśli chcesz wyłączyć to na stałe to edytuj plik: /etc/my.cnf i w nim wyszukaj (lub dodaj jeśli nie ma):

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Na koniec zrestartuj serwer:

service mysql restart

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *