Nëse po përdorni MySQL për bazën e të dhënave në projekt, atëherë mund të hasni gabim kur merrni të dhëna që shtojnë klauzolë GROUP BY në MySQL.
Si shembulli më poshtë i gabimit:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘db_name.table_name.idx’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Ky gabim ndodh sepse përpiqesh të GROUP BY me kolonë jo të grumbulluar (p.sh. çelësi kryesor).
Si ta zgjidhni këtë gabim? Kemi 2 zgjidhje.
- Thjesht fshini kolonën jo të grumbulluar në klauzolën GROUP BY
- Çaktivizuar ONLY_FULL_GROUP_BY në modalitetin MySQL
Zgjidhja e parë është shumë e lehtë. Thjesht fshini kolonën jo të grumbulluar në klauzolën tuaj GROUP BY, atëherë gabimi nuk do të ndodhë.
Zgjidhja e dytë është gjithashtu e lehtë, por kjo mund të ndikojë në të gjithë deklaratën SQL. Pra, duhet të keni kujdes nëse dëshironi të përdorni këtë zgjidhje.
Zgjidhja e dytë është thjesht ndryshimi i sql_mode në MySQL.
MySQL ka shumë sql_mode si ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLE, NO_ZERO_IN_DATE etj…
Gabim jo i grumbulluar për shkak të ONLY_FULL_GROUP_BY sql_mode është aktivizuar.
SHËNIM: ONLY_FULL_GROUP_BY është sql_mode i parazgjedhur
Nëse shpesh klauzolë GROUP BY me kolonë unike, atëherë mund të çaktivizoni ONLY_FULL_GROUP_BY sql_mode në MySQL. Si më poshtë:
SET SESSION sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';