[ Shinhan @ 29.11.2011. 15:03 ] @
Ko što kaže naslov, nakon što se jedan query izvrši sajt mi se zaglavi (u lokalu) i moram iz proces liste da ubijam taj query koji se nalazi u "freeing items" statusu (query se izvršio, podaci su izmenjeni, ali pošto je query u "freeing items" ne završava se generisanje ostatka stranice, pa sve samo stoji zaglavljeno). Da bude još čudnije, ako query ručno pokrenem, u MySQL workbench on se izvrši bez problema. Jedino ako ga aplikacija pokreće onda je problem. Koristim CodeIgniter, bez ActiveRecords. Probao sam u aplikaciji da koristim i direktno mysql_query funkciju, ne vredi.

Nakon googlanja naišao sam na Bug #43758, međutim to piše da je ispravljeno u 5.1.36 a u lokalu imamo 5.1.37 (uskoro planiramo prelaženje na 5.5 ali još nismo). Takođe, tamo pišu da se može probati isključivanje query cache-a što sam probao i ne vredi.


Query:

Code:

UPDATE `ns_poll_option` SET `option_name` = 'prva' WHERE id = '1';


Tabela:
Code:

delimiter $$

CREATE TABLE `ns_poll_option` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_poll` int(10) unsigned NOT NULL,
  `option_name` varchar(45) COLLATE utf8_slovenian_ci NOT NULL,
  `ordering` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_poll` (`id_poll`,`ordering`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci$$


Znači UPDATE jednog varchar polja po primarnom ključu. Ne može biti jednostavnije. Tabela ima 3 rekorda.
[ bogdan.kecman @ 29.11.2011. 19:54 ] @
ako skroz ugasis query cache - da li se ista stvar desava?
[ Shinhan @ 30.11.2011. 08:42 ] @
Probali smo da u my.ini da stavimo

query_cache_size = 0

ali nije vredelo. Koliko sam razumeo na to se misli kad se kaže "isključiti query cache"?

Takođe, jutros je upgradovan server na PHP 5.3 i MySQL 5.1.41 (i naravno još uvek je isti problem).
[ bogdan.kecman @ 30.11.2011. 09:08 ] @
SHOW VARIABLES LIKE 'have_query_cache';

to treba da ti kaze "no"

ako nije dovoljno onda: query_cache_type = OFF;

to bi trebalo da ga ugasi, mozes da uradis SET GLOBAL query_cache_type = OFF; i trebalo bi da bez restarta ugasi query cache

ako i dalje imas problem, probaj da napravis reproducible test case da ja probam ovde kod mene na raznim verzijama kako se ponasa, moguce da je neki bug
[ Shinhan @ 30.11.2011. 09:29 ] @
Kad sam probao da stavim query_cache_type = OFF; u my.ini onda MySQL nije hteo da se startuje. Ako probam SET GLOBAL query_cache_type = OFF; da pokrenem kao query, onda mi to ignoriše i SHOW VARIABLES mi prikazuje da je query_cache_type ON.

Što se tiče test case, ne znam kako da to uradim. Ko što rekoh kad taj identičan query ručno pokrenem u Workbench onda to radi bez problema :/
[ after @ 01.12.2011. 17:36 ] @
Neznam da li moze da ima veze, ali neke aplikacije koje se konektuju na Mysql imaju default variable koje se primenjuju za tu sesiju.

Recimo SQL Yog ima negde u svom config fajlu zakucano wait timeout na 8h i to se primenjuje u svakoj sesiji yog-a, bez obzira kako je podesen wait timeout na serveru. Verovatno prvo sto izvrsi Yog kada se zakaci na server je neki set session wait_timeout=8h ili nesto slicno.

Inace probaj da iskljucis query cache u my.cnf sa

init-connect='set session query_cache_type = OFF' #mozda i sa global umesto session, mada bi trebalo da je isti rezultat

Pozdrav.