Wpis z mikrobloga

#programowanie #php #zend #mysql?

1. Otwieram transakcję.
2. Mam kilka modeli tabel.
3. Do każdej z tych tabel zapisuję dane.
4. Na jednym z adapterów robię->commit();

Transakcje wiszą w powietrzu nie zamknięte.

Czy muszę na każdym z użytych adapterów użyć->commit()?


I analogicznie z rollbackiem?
  • 24
  • Odpowiedz
@anonim1133: Trzeba zakopać Twój kod. ( ͡° ͜ʖ ͡°) Pokaż, co robisz i jak - gdzieś musisz popełniać błąd. Niepokoi mnie też wyrażenie: "transakcje" - MySQL obsługuje tylko jedną per sesja. To literówka, czy faktycznie wisi kilka transakcji?
  • Odpowiedz
Trzeba zakopać Twój kod. ( ͡° ͜ʖ ͡°)

@ZukColorado: O ty nicponiu!


Nie da się chyba nawet otworzyć kolejnej. Chodziło mi o jedną transakcję.

W kodzie mam commit(), a przy niepowodzeniu rollback(który i tak by z automatu powinien w sumie pójsć jak coś nie zagra?). A mimo to żadne dane mi w bazie się nie pojawiają. Dopiero jak w mysql-workbenchu wrzucę COMMIT i wykonam to dane się
  • Odpowiedz
W kodzie mam commit(), a przy niepowodzeniu rollback(który i tak by z automatu powinien w sumie pójsć jak coś nie zagra?). A mimo to żadne dane mi w bazie się nie pojawiają. Dopiero jak w mysql-workbenchu wrzucę COMMIT i wykonam to dane się pojawiają. Magia świąt.


@anonim1133: Strasznie dziwne. Przecież sesja, której używa Twoja aplikacja to nie ta sama, co w workbenchu, więc nie mam pojęcia, w jaki sposób commit z
  • Odpowiedz
Takie luźne wnioski ze szklanej kuli. ;-)


@ZukColorado: Rozumiem, dzięki :)

Wszystkie inserty mam otoczone jednym try{}catch(){}
Przed końcem try mam ->commit()

A w catch vardump($e); die; <- Nie umiera, więc nie rzuca błędem, teoretycznie_

Strasznie dziwne. Przecież sesja, której używa Twoja aplikacja to nie ta sama, co w workbenchu

Mnie tłumaczyć nie musisz, ale mówię jak jest. Pozamykałem co się dało w workebenczu, obaczę tera.
  • Odpowiedz
@anonim1133:
W MySQL nie można tworzyć scope przy transakcjach, ze tutaj otwierasz jedną, a tam drugą... Jedną zamykasz, a druga jest otwarta.
W MySQL jest tylko 1 transakcja, przy wywołaniu otwieraniu transakcji, jesli wczesniej byla otwarta to nic sie nie dzieje.

Dlatego też możliwe jest że gdzieś ci się zduplikowało połączenie?
  • Odpowiedz
W MySQL jest tylko 1 transakcja, przy wywołaniu otwieraniu transakcji, jesli wczesniej byla otwarta to nic sie nie dzieje.


@Klopsztanga: Takie też jest moje rozumowanie na ten temat, dlatego tego nie rozumiem ni cholery...
  • Odpowiedz
@anonim1133: a jak od zf2 debug toolbar? Nie pamiętam, bo nie korzystałem (projekt całkowicie ajaxowy, nie moglem z tego niestety korzystać), ale chyba tam też są listy SQLi wykonanych na bazie, wraz z backtrace.
  • Odpowiedz
@anonim1133: ale jeśli masz wybór to wy@#$#2 zenda , bo to nie pomaga za bardzo, trudno się pisze, brak dobrego ORM'a wbudowanego. Jak przeszedłem na #symfony2 to czułem pewien orgazm, że tyle rzeczy już gotowych i łatwych, przejrzystych i kod ostateczny był bardzo czytelny :)
  • Odpowiedz
@Klopsztanga: ABRAKADABRA TO CZARY I MAGIA

Taka głupota, że aż wstyd. Włączyłem ten zendowy debuger, jest początek i koniec transakcji.
Odpaliłem phpmyadmina, i tam wszystkie dane są. A w MYSQL-Wrokbench nadal brakuje najnowszych wierszy...

I weź zaufaj tutaj jakiejś aplikacji.

Muszę porzucić mysql i zenda, bo postgres i symfony czkeją.

Oby do końca projektu.
  • Odpowiedz
@anonim1133: postgress w sumie na początku ci da plaskacza w twarz, bo niestety nie ma phpmyadmina - a ja zawsze z niego korzystałem. A phppgadmin jest całkiem inny interfejs.

Jeśli przeżyjesz tydzień może 2, to wtedy zobaczysz jaki MySQL i jego SQL jest niepełnosprawny ;) Serio, ten PLSQL od postgresql to bardzo dobra roboota, wszystko w nim można robić, nawet programować ( ͡º ͜ʖ͡º)
  • Odpowiedz
postgress w sumie na początku ci da plaskacza w twarz, bo niestety nie ma phpmyadmina - a ja zawsze z niego korzystałem. A phppgadmin jest całkiem inny interfejs.


@Klopsztanga: pgadmin3 FTW
Jedyne co bardziej mi się podoba w workbenchu to to, że łatwo można tworzyć modele/diagramy.

Kolego, ja z MySQL znam się nie od dziś, wiem jaki jest fantastyczny, ciągle sobie o tym przypominam :)
  • Odpowiedz