Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Diskuze: Problém s GROUP BY po prechode na MySQL 5.7

Ostatní jazyky SQL SQL a databáze Problém s GROUP BY po prechode na MySQL 5.7

Aktivity (1)
Avatar
Miroslav Tomašovič:5. srpna 17:07

Ahojte. Po zmene MySQL databázy môjho webu na verziu 5.7 mám problémy s GROUP BY, konkrétne sa mi zobrazuje toto chybové hlásenie:

1055: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'databaza.Cube­Cart_cats_idx­.cat_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_fu­ll_group_by

Týka sa to tejto časti php kódu môjho webu:

if (isset($_GET['catId']) && $_GET['catId'] > 0) { Cats ($where_prod, $db->mySQLsafe($_GET['catId'])); }
$where_prod .= ") GROUP BY ".$glob['dbprefix']."CubeCart_cats_idx.productId";

Do MySQL a PHP sa veľmi nevyznám, je nejaká jednoduchá možnosť ako "vypnúť" ONLY_FULL_GROUP_BY, teda aby sa GROUP BY správal ako doteraz?

Ďakujem.

 
Odpovědět 5. srpna 17:07
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15. srpna 15:25

On nikdo nereaguje, protoze nechape dotaz.
To php, to je tam krasna vec, ale lidi, co delaji s sql rozumi sql dotazum ne php. zkus udelat v tom php echo toho dotazu a ten sem pak zkopiruj. Ta chybova hlaska se tyka toho dotazu a v tomhle kodu nemas 80% dotazu.

Mam pocit, ze by mohl byt problem v tom, ze sloupce, ktere mas za GROUP BY je treba mit jeste v SELECT (ale to je asi blbost) nebo mozna WHERE. Jakoze ty sloupce, ktere jsou v group by musi byt jmenovane i ve where (nebo selectu). Mozna se da zmenit nejake nastaveni sql, ze to samo doplnuje, proto ti to jinde fungovalo, nevim.

'databaza.Cube­Cart_cats_idx­.cat_id' - Takovyto string v tom kodu, co jsi poslal, nikde nevidim.
".$glob['dbpr­efix']."CubeCar­t_cats_idx.pro­ductId - to jejspis vyplodi...
'databaza.Cube­Cart_cats_idx­.productId' - ale, to je preci neco jineho

Editováno 15. srpna 15:26
 
Nahoru Odpovědět 15. srpna 15:25
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Miroslav Tomašovič
David Hynek:15. srpna 17:35

nemela by tam byt mezera u posledniho kousku retezce? tedy " Cube..." ?

Nahoru Odpovědět 15. srpna 17:35
Čím víc vím, tím víc věcí nevím.
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na David Hynek
Peter Mlich:16. srpna 9:22

To taky nechapu :) Ale to je u mne normalni stav :)

Sql dotazy lze napsat takto:
SELECT sloupec FROM tabulka
SELECT tabulka.sloupec FROM tabulka
SELECT databaze.tabul­ka.sloupec FROM databaze.tabulka

Kdyz pise, ze neni agregovany, tak ten sloupec existuje, takze upravovat ten text mezerou navic by nemelo asi nic zmenit. Ale jen hadam :)
databaza.Cube­Cart_cats_idx­.cat_id

Si myslim, ze bude lepsi opravit sql dotazy nez resit zapinani nejakeho modu.
Mohlo by to jit zapnout nejakym sql prikazem. To by se dalo najit asi googlem. Ale az s tim bude delat cary mary priste, tak se znovu bude ptat. A treba ten mod uz nepujde prepinat.

 
Nahoru Odpovědět 16. srpna 9:22
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Peter Mlich
David Hynek:16. srpna 14:13

Chybí mu tam tečka

") GROUP BY ".$glob['dbprefix'].".CubeCart_cats_idx.productId";

Chtěl jsem napsat tečka a napsal mezera a už mi to nechtělo povolit opravu... (asi odpolední únava)

Předpokládám že má toto:

$glob['dbprefix'] = "databaze";

Takže spojením řetězců má jen:

"databazeCubeCart_cats_idx.productId"
Editováno 16. srpna 14:15
Nahoru Odpovědět  +1 16. srpna 14:13
Čím víc vím, tím víc věcí nevím.
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na plelovsky
Peter Mlich:21. srpna 15:02

Hele, mimochodem, doporucuji k linkum kopirovat i reseni. Kdyz ten link prestane fungovat, tak je ta odpoved neuzitecna. Pokud ne uplne vse, tak aspon trochu, naznacit.

SET sql_mode = 'ONLY_FULL_GROUP_BY';

Z tohoto se uz da celem poznat, ze se jedna o query, ktere staci zadat pred tim, nez zavola ten jeho nebo hned po pripojeni k db. Osobne se mi ho nechtelo googlovat, sam to nepouzivam.

 
Nahoru Odpovědět 21. srpna 15:02
Avatar
plelovsky
Člen
Avatar
Odpovídá na Peter Mlich
plelovsky:21. srpna 15:34

On to chce vypnout, ne nastavit.

 
Nahoru Odpovědět 21. srpna 15:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.