Zeoslib i cached tables

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ą?

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.

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ć.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1