Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF][ZendFramework][ZF/MySQl/PDO] Wywołanie procedury blokuje wszystko co dalej
fragles
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 14.12.2008

Ostrzeżenie: (0%)
-----


Sprawa wygląda następująco - gdy wywołuję procedurę wszystko co jest związane z SQL-em (dokładniej z MySQL-em) obojetnie jakiego typu to by nie było zapytanie (SELECT, INSERT, UPDATE, DELETE, CALL, SHOW itp itd) powoduje błąd 2014
Cannot execute queries while other unbuffered queries are active

pytanie brzmi
Jak temu zaradzić? Bo czasami gdy np sesja jest w bazie to takie coś powoduje błąd

jak na razie resetuje połączenie po każdej procedurze, ale to zbyt optymalne nie jest - może ktos ma pomysł jak to zrobić, żeby było dobrze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
pgrzelka
post
Post #2





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


pokaż jak to masz zrobione


--------------------
Go to the top of the page
+Quote Post
fragles
post
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 14.12.2008

Ostrzeżenie: (0%)
-----


Cytat(pgrzelka @ 14.09.2009, 11:37:17 ) *
pokaż jak to masz zrobione


1)jest klasa bazowy do oberacji bazodanowych a w niej metoda

  1.  
  2. protected function pobierzRekordy($sql,$tryb)
  3. {try
  4. { if($tryb==1)
  5. return $this->_dbh->fetchAll($sql);
  6. elseif($tryb==2)
  7. return $this->_dbh->fetchRow($sql);
  8. }
  9. catch(Exception $e){ //tworzenie loga o błedzie do pliku } }[/list]
  10.  


2) są klasy pochodne - same zapytania sql, a w nich jest metoda z wywołaniem procedury

  1. public function pobierzRaport($typ,$limit,$offset,$kolumna,$sortowanie)
  2. {
  3. $sql='CALL raportowanie('.$typ.','.$limit.','.$offset.','.$kolumna.','.($sortowanie?'ASC':'DESC').')';
  4. return $this->pobierzRekordy($sql,1);
  5. }


mniej więcej tak sie to odbywa

jeśli jest procedura to wszystko co poniżej jest błędem 2014

Ten post edytował fragles 14.09.2009, 11:02:11
Go to the top of the page
+Quote Post
NuLL
post
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


RTFM !

  1. $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
fragles
post
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 14.12.2008

Ostrzeżenie: (0%)
-----


no to też mam

  1. $dbconf = new Zend_Config_Ini('./application/config/config.ini','database');
  2. $db = Zend_Db::factory($dbconf->db->adapter, $dbconf->db->config->toArray());
  3. $db->getConnection()->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  4. Zend_Registry::set('db', $db);


a i tak nie gada jak trzeba i muszę resetować połączenie - chyba, że cos nie tak robię z atrybutami połączenia?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:46