Minap ismét egy szép problémába szaladtunk bele. NHibernate-et használunk ugyebár, ami hbm fileokban tárolja a mappingeket (hogy mely class mely property-je milyen tábla milyen mezője...)
Namármost, módosítottunk egy táblát, 2 nullozható mezőt átállítuttunk nem nullozhatóra. A hbm-ekben és a generált class-okban. Az adatbázis, ami mögötte volt, egy előző napi, tehát abban még nullozható volt.
Olyan hibát vettünk észre, hogy valami miatt úgy lockolja egy lekérdezés után a lekérdezett rekordokat, hogy még selectálni sem lehetett belőle. Nem tudtuk elképzelni miért. Nyomoztuk, hogy hátha valaki kézzel beállít egy NHibernate session-ből kapott ojjektumon valamilyen property-t, és talán az fogja, mert update, és mert hogy a tranzakció nyitva van. De sehol nem találtunk ilyen update-et, viszont amikor az sql-t trace-eltük, folyamatosan láttuk hogy megy le az update utasítás, commitolatlan tranzakció miatt fogva marad.
Sok órás nyomozás után kiderült, hogy mivel az adatbázisban a mező nullozható volt, a hbm-ben viszont nem, select után valamiért az NHibernate vissza akarta update-elni a rekordot. Hogy miért, mikor semmilyen adat változás nem történt, ma sem tudjuk. Csak beállítottuk helyesen a mezőket, oszt azóta megy.
2010. szeptember 2., csütörtök
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése