Zeoslib i cached tables

Zeoslib i cached tables
KR
  • Rejestracja:prawie 21 lat
  • Ostatnio:prawie 3 lata
0

Korzystam z ZeosLib 7.2 w Lazarusie 2.0.12 do dostępu do bazy Firebirda w wersji 3
Otwieram w aplikacji lazarusowej tabelę korzystając z TZQuery i widzę rekordy.
Następnie korzystając z aplikacji w PHP w przeglądarce dodaję do tabeli nowy rekord.
Odświeżam TZQuery lazarusowe korzystając z funkcji Close i Open jednak rekordy dopisane z przeglądarki nie pojawiają się, choć w bazie są bo Flamerobin je pokazuje.
W Lazarusie na ich pojawienie pomaga dopiero TZConnection Disconnect i Connect ale tego chciałbym uniknąć aby utrzymywać połączenie ciągle.
Wygląda tak jakby tabela była cacheowana lokalnie i działał jakiś mechanizm kontrolujący lokalnie zachowanie tabeli.
Cached updates mam wyłączone ale coś trzyma cache tabeli. Jeżeli zmodyfikuję tabelę z poziomu Lazarusa to oczywiście Close i Open działają.
Jakiś pomysł na rozwiązanie problemu bez rozłączania połączenia z bazą?

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 2 godziny
  • Postów:1597
2

Przyznam szczerze, że nigdy takich problemów nie miałem ale fakt nie robiłem aplikacji na firebird aby jednocześnie pracowało na niej php i aplikacja w delphi (lub lazarus). Zwaliłbym na php i brak commita ale skoro mówisz, że we flamerobin widzisz to znaczy, że commit poszedł. Jedyne co mi na ten moment przychodzi do głowy (bo nie mam serwera Firebird pod ręką aby sprawdzić) to sprawdź transactionisolationlevel na TZConnection bo może jest ustawione na tiReadCommited zamiast na tiNone.

WL
  • Rejestracja:ponad 21 lat
  • Ostatnio:14 dni
  • Postów:1083
2

Opanuj obsługę transakcji w ZEOS, bo ewidentnie tu leży problem.
Świadczy o tym dokładnie to, co napisałeś.

Poczytaj:
https://zeoslib.sourceforge.io/viewtopic.php?t=2644
Zastosuj się i będzie działać.

woolfik
Czyli dobrze podejrzewałem :P
KR
  • Rejestracja:prawie 21 lat
  • Ostatnio:prawie 3 lata
0

Dzięki!
Ustawienie TransactionIsolationLevel na tiReadCommitted robi robotę.
Pozdrawiam

woolfik
Ustaw wątek jako rozwiązany aby inni mieli info, że w tym pytaniu jest rozwiązanie ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.