Výsledky 1 až 11 z 11

Téma: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

  1. #1

    Standardní [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Zdravte,

    tak jsem si rozbehl MySQL 5.0.22-community-nt, k tomu mam Apache 2.2.3 a PHP 5.2.1. A mam nasledujici problem:

    v databazi mam nekolik ulozenych procedur. Pomoci nastroje SQLyog je mam odladene a funguji ok.

    Pokud je zavolam v php, tak dalsi sql dotaz po zavolani ulozene procedure mi skonci hlasenim:

    2013 Lost connection to MySQL server during query

    Ovsem MySQL server nespadne ani ve spravci uloh neni videt ze by byl nejak zatizen...

    Co jsem googlil, tak je asi problem v php. Nasel jsem radu, abych volal po kazdem zavolani ulozene procedury funkci mysql_free_result na vysledek dotazu, ale to taky nepomaha.

    Mate s tim nekdo zkusenosti?
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  2. #2
    Member
    Založen
    21.10.2002
    Bydliště
    Praha Petřiny
    Věk
    44
    Příspěvky
    309
    Vliv
    281

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    V PHP byly dve moznosti v connection myslim, nejake docasne a trvale, zkousel jsi obe moznosti ? Predpokladam, ze kdyz po zavolani procedury opet provedes mysql_connect, tak to jde, ale to asi neni systemove reseni pokazde volat nove spojeni, ze ? Nevim jak u mySQL, ale v Sybase to strasne kravilo, kdyz clovek nedal do $result = @sybase_query($query), kde $query bylo volani procedury ten zavinac, dely se pak fakt divne veci na outputu, pritom procedury byly take v poradku.
    Hope is the first step on the road to disappointment.
    Alcohol is the first step towards alcoholism.

  3. #3

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Hod sem priklad procedury a priklad volani po te procedure...
    C2D Wolfheart stabilized...CoolingSys completed...Aurora 3D Black...full 120mm Wolfheart
    WinXP && Gentoo Powered Wolfheart http://img215.imageshack.us/my.php?i...pgentooqt2.jpg
    Intel Core2Duo E6300 1.86@3.2GHz cooled by Ninja Plus| Gigabyte DS4 | 1024MB Kingston 750@920MHz | sound | Gigabyte X1650Pro SilentPipe II | TEAC 40x & Toshiba DVD-RW | WD800JB 80GB | Logitech MX510 | Fortron 300W NP(PN) | MS Sidewinder Strategic Commander|Acer 1721hm
    C366 2@1,85V 32MB RAM, Slackware 9.1 router connected to Chello

  4. #4

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Kdyz jsem sem chtel poslat priklady co a jak volam tak jsem zjistil, ze problem je v teto procedure:

    Kód:
    CREATE PROCEDURE `getcompaniescount`(userid int)
    BEGIN
    	SET @t = companytable(userid);
    	SET @s = CONCAT('SELECT COUNT(company) AS maxcount FROM ',@t);
    	PREPARE stmt FROM @s;
    	EXECUTE stmt;
    	DEALLOCATE PREPARE stmt;
        END$$
    Kód:
    CREATE FUNCTION `companytable`(userid int) RETURNS varchar(50)
    BEGIN
    	IF (canviewall(userid)='1') THEN 
    		RETURN 'showallcompany';
    	ELSE 
    		RETURN 'showcompany';
    	END IF;
        END$$
    Poznamky:
    1. showallcompany a showcompany jsou dva pohledy na tabulku companies, ve ktere mam ulozene firmy. Jeden vraci jen viditelne a druhy vsechny firmy z tabulky companies.
    2. kdyz odstranim radek EXECUTE stmt; z te prvni procedury, tak mi vse funguje.
    3. kdyz tuhle proceduru volam z SQLyog, tak zadny problem neni.


    Jeste, z php to volam takto:
    Kód:
    mysql_connect("localhost","user","",65536);
    mysql_select_db("databaze");
    $res = mysql_query("CALL getcompaniescount('1');");
    $row = mysql_fetch_object($res);
    mysql_free_result($res);
    Zkusim o tom jeste neco zatim vygooglit.
    Naposledy upravil MEluZíNa; 11.02.2007 v 21:44.
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  5. #5

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Tak jsem to jeste zkusil otestovat pod linuxem
    MySQL: 5.0.32-Debian_3-log
    Verze MySQL klienta: 5.0.30
    PHP 5.2.0-8

    Po volani "Call getcompaniescount('1');" a naslednem zavolani jakehokoli dalsiho dotazu mi to pro zmenu hodi hlasku 2014 Commands out of sync; you can't run this command now

    Zkousel proceduru jeste zjednodusit
    Kód:
    CREATE DEFINER = `root`@`localhost` PROCEDURE `getcompaniescount` ( userid int ) DETERMINISTIC
    BEGIN 
        PREPARE xtab FROM 'SELECT "aaaa"';
        EXECUTE xtab;
        DEALLOCATE PREPARE xtab;
    END$$
    A porad to same Mohl by to pls nekdo ozkouset?
    Naposledy upravil MEluZíNa; 12.02.2007 v 12:17.
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  6. #6

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Tak uz jsem se to castecne vyresil.

    Kdyz na zacatku php skriptu zavolam jakoukoli ulozenou proceduru, ktera nepouziva EXECUTE, tak pak vse funguje.

    Zvlastni
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  7. #7
    Senior Member
    Založen
    08.10.2002
    Bydliště
    Mělník
    Věk
    44
    Příspěvky
    1 275
    Vliv
    290

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    zkusil si mysql_pconnect ? peristent, trvajici spojeni

    glo
    CASE Chieftec DX-01B-D { GIGABYTE X48 DS5 { Intel q9300 + 8GB + ATI x1600 + 2x Seagate ES2 1TB } + LiteOn SHM-165P6S} } + 21" Samsung SyncMaster 215TW

  8. #8

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Citace Původně odeslal Glottis Zobrazit příspěvek
    zkusil si mysql_pconnect ? peristent, trvajici spojeni
    Ani tohle nepomaha.

    A jeste mam jeden poznatek, kdyz ten dotaz, ktery volam pomoci EXECUTE, je slozity (obsahuje GROUP, JOIN atd), tak to taky padne.
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  9. #9

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Bohuzel stale aktualni tema :/

    Pls zkusil byste to nekdo u sebe? Zavolat z php ulozenou proceduru v mysql, ktera ma v sobe volani "EXECUTE nejaky_prikaz", a vyzkouset zda vas to na dalsim sql dotazu odpoji od mysql.

    Budu vam zavazan
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  10. #10

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Tak uz jsem prisel na to cim to vsechno je. Pro MySQL verze vyssi nez 4, je potreba pouzivat rozsireni mysqli, pak uz jde vse ok. Rozsireni mysql podporuje jen nizsi verze MySQL...
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  11. #11

    Standardní Re: [MySQL & PHP] Stored Procedures => Ztrata spojeni s MySQL

    Konkretni problem je v tom, ze MySQL pri zavolani stored procedury (mozna i funkce) vrati jednak vysledek toho nejakeho selectu co se provadi v ulozene procedure a pak druhy vysledek a to, zda behem vypoctu nedoslo k nejake chybe. Takze vlastne po zavolani ulozene procedury je potreba odebrat od MySQL dva vysledky a k tomu rozsireni mysql nema prostredky...

    To jen tak pro info
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •