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.

  1. Thjesht fshini kolonën jo të grumbulluar në klauzolën GROUP BY
  2. Ç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';