我在OrientDB方案無類,讓我們說這叫做「TestClass的」,這是很簡單的,並含有1個布爾屬性:OrientDB:UPDATE查詢結果以分佈式模式
{
lock : 'true'
}
當我執行更新通過控制檯或Web UI查詢:
update testClass set lock = true
我有
Updated record(s) '1' in 0.033000 sec(s).
從控制檯和類似的結果從網絡用戶界面。
同樣的結果,當我執行下面的Java代碼
ODatabaseDocumentTx db = ... // open db connection
Object result = db.command(new OCommandSQL("update testClass set lock = true")).execute()
的「結果」可變我所得到的是整數類型的,包含更新的記錄數。
但是當OrientDB服務器以分佈模式啓動時(我有3個節點),所有東西都會改變。從控制檯執行相同的查詢產生:
Updated record(s) '[null]' in 0.010000 sec(s).
正如你所看到的,現在結果是一個數組,它是空的。我從Java獲得的一樣 - 'result'變量的類型是ArrayList,它是空的。 最有趣的結果顯示web ui - 當我執行相同的查詢時,我在'value'列中有'[1]',這意味着,結果是數組,它包含1個整數值'1' 。
它是一個功能或錯誤?我究竟做錯了什麼?
我認爲這是由於在分佈式模式其實你拿到「減少」的結果,但對於一個未知原因在控制檯中無法正確管理。記錄是否更新? – Lvca
是的,數據庫中的記錄已更新。對我來說最重要的是獲取更多的Java代碼記錄,因爲我試圖爲分佈式應用程序實現簡單的樂觀鎖。原始查詢是「update testClass set lock = true where lock = false」 – Tim
這已在上一個2.1.x分支中修復。 – Lvca