ugrás a tartalomhoz

Tárolt eljárásoknál szakad a MySQL

janoszen · 2007. Május. 5. (Szo), 19.05
Sziasztok,

igazából elég homályos előttem, hogy hol lehet a hiba. Szabvány Apache 2, PHP 5, MySQL 5 telepítés, minden jónak tűnik. Tárolt eljárásokat használnék, viszont bizonyos tárolt eljárásoknál szakad a MySQL kapcsolat, a saját programom a logba ezt írja:

MySQL error: Lost connection to MySQL server during query prev. query: CALL html_getcontents("maspex.hu/cegunkrol/index", "GUEST")


Ez esetben például egy mediumtext-et kellett volna kiszolgálni, egy oszlop, egy sor. MySQL command lineból ez tökéletesen működik, PHP-ból nem.

A manualban leírt 131072-es flaget beállítottam és nem bufferelt lekéréseket indítok. Végig néztem a manual ide vonatkozó részét de nem találtam semmit, ami hiba lehetne, kitesztelve: a MySQL kapcsolat él, a szerver él, minimálisan kicsi adatokat kérek le...

Merre induljak el?
 
1

Bővítés

janoszen · 2007. Május. 5. (Szo), 19.36
Na, közben kiderül pár dolog. Maga a rendszer mod_rewrite-ot használ, ami nem is lenne baj. De, az URL-t, amit kap, azt átadja az SQL-nek és kizárólag akkor halálozik el a dolog, amikor mod_rewrite-on keresztül megy a dolog. Ebből két dologra lehet következtetni

1. bugos a mod_rewrite (Windows?)
2. Az én SQL kódom csinál valamit, amitől lerohad a kapcsolat.

Az első nincs kizárva, a második annál furcsább lenne, hiszen konzolból simán megy minden, az érintett query-kre még csak nem is dob warningot.
2

Megoldás

janoszen · 2007. Május. 6. (V), 21.25
Ha esetleg valaki szívna vele, a következő a probléma: a MySQL nem egy, hanem két result set-et ad vissza, ami azt jelenti, hogy a másodikat nem tudod lekérni mysql extensionnel, csak mysqli-vel tudsz result setet ugrani. Ha nem kéred le a result seteket, az azt jelenti, hogy vagy out of sync hibát kapsz vagy teljesen lerohad a mysql kapcsolat a következő lekérésnél, ezzel fantom hibát okozva.

Ha PHP4-et kell használnod vagy nincs mysqli, akkor az egyetlen általam talált megoldás a reconnect, mert ez reseteli a result seteket. Ha tárolt eljárásokat használsz, nem lesz akkora overhead, mert 2-3-4 lekérésből megvan egy oldal.

Azon gondolkozom még, hogy pconnect-et használjak, hátha attól jobb lesz, de ezt még nem teszteltem ki. Miután ilyen szépen ellevelezgettem magammal, valaki szóljon ha hasznos volt.
3

hasznos volt!

Táskai Zsolt · 2007. Május. 7. (H), 09.42
:)
(tényleg)
4

szuper

svan99 · 2007. Nov. 28. (Sze), 00.21
Szuper hasznos volt az info. Mar majdnem elkezdtem megutalni a tarolt eljarasokat emiatt a buta hiba miatt.
Koszonom hogy beirtad a megoldast. :)