Citat:
dejandsc: Pristupam udaljenoj MYSQL bazi preko ODBC i javlja mi se ova poruka, tj. ovaj problem “This record has been changed by another user...” bla, bla.
Valjalo bi da prvo razumeš kako sarađuju ODBC i Access... Odnosno, nije to tako srećan brak kako na prvi pogled može da izgleda.
Linkovanim tabelama Access pristupa naoko kao sopstvenim objektima, ali, pojednostavljeno rečeno, vezu održava ODBC drajver, koji služi kao layer između Jet mašine, odnosno Access database engina i DB Servera sa druge strane, tj. u tvom slučaju MySQL baze.
E sad, ODBC drajver, sve u zavisnosti od kompleksnosti situacije, često lepo "ume" da prevede Access komande na interni SQL jezik DB servera, i da pritom sasvim preskoči Jet mašinu za obradu podataka, odnosno, da se direktno obraća serveru, na njegovom jeziku, i pritom se taj mehanizam ponaša skroz super - kroz žicu putuju samo filtrirani podaci, lockovanje je na strani servera, itd, tj. do izražaja dolaze sve ostale blagodeti klijent/server arhitekture...
Ali, u situacijama kada ODBC drajver ne ume da rastumači šta mu front end kaže, što uopšte nije retko, onda uposli Jet mašinu, i u takvim situacijama se Access ponaša kao klasična file baza, odnosno još gore, jer ima i jedan korak više za put podataka, tj. ODBC. Svako filtriranje, ažuriranje... podataka se tada izvršava na klijentskoj mašini.
To u praksi znači, da ako tabelama pristupaš sa MySQL hosta, preko spore (u odnosu lokalni disk ili LAN) internet veze, onda za ažuriranje podataka, front end Access aplikacija mora da na klijensku mašinu svuče sadržaj čitave tabele koja se obrađuje, interno uradi šta treba, pa obrađene podatke vrati na Server. Za to vreme, MySQL drži čitavu tabelu lockovanu i čeka, jer ne zna šta kakve će se izmene desiti, sve dok mu ODBC ne da povratnu informaciju.
Dovoljno je pri tome da internet veza samo malo štucne, i da se DB Server ili Access "zbune", odnosno protumače problem kao raskid konekcije ili nešto slično, a MySQL će držati spornu tabelu lockovanu, sve dok ne istekne time out vreme podešeno na strani Servera...
[Ovu poruku je menjao smal dana 21.07.2011. u 19:26 GMT+1]