問題背景
前期App內(nèi)使用了華為AppGallery Connect的CloudDB服務(wù),用來存儲(chǔ)應(yīng)用內(nèi)的數(shù)據(jù)關(guān)系。
最近看CloudDB的Android SDK發(fā)布了新版本,我們就計(jì)劃對(duì)Android應(yīng)用的版本同步做了升級(jí),但是升級(jí)SDK版本,調(diào)測(cè)的時(shí)候,出現(xiàn)創(chuàng)建對(duì)象類型的錯(cuò)誤。
具體的日志信息如下:
W/NaturalBase: CreateObjectType: has opened naturalStore.
E/AGConnectCloudDB: Failed to create object type into the AGCConnectCloudDB.
W/System.err: com.huawei.agconnect.cloud.database.exceptions.AGConnectCloudDBException: code: 3 message: Close CloudDBzone first.
問題解決
從錯(cuò)誤信息中可以看到,需要我先關(guān)閉CloudDBZone再進(jìn)行操作。但是不知道原因。 不官怎么說,先找找官方文檔,看看對(duì)應(yīng)錯(cuò)誤碼是怎么描述的。
看文檔描述,需要我先關(guān)閉Zone再進(jìn)行操作,但是我并沒有執(zhí)行刪除CloudDBZone的操作,應(yīng)該不涉及關(guān)閉CloudDBZone才對(duì)啊。
最終還是從日志和文檔分析:
1、從錯(cuò)誤日志來看,我這是創(chuàng)建對(duì)象類型,也就是createObjectType方法的時(shí)候報(bào)的該錯(cuò)誤。
2、再結(jié)合文檔,CloudDB初始化的流程,應(yīng)該是:initialize -> createObjectType –> openCloudDBZone2
這樣問題就明確了,我需要在openCloudDBZone2之前,就先完成創(chuàng)建對(duì)象類型方法。
修改代碼執(zhí)行的優(yōu)先級(jí)順序:initialize -> createObjectType –> openCloudDBZone2,問題圓滿解決。
問題根因
咨詢?nèi)A為技術(shù)支持,得到的該錯(cuò)誤的根本原因:
操作涉及到了版本的升級(jí),也就是說需要同步升級(jí)云側(cè)對(duì)象類型的schema。
在有打開且未關(guān)閉的CloudDBZone的情況下,是無法做schema升級(jí)的。
需要先完成對(duì)象類型的創(chuàng)建,在執(zhí)行openCloudDBZone的操作。
相關(guān)參考鏈接:
1、云數(shù)據(jù)庫(kù)API文檔
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-References/clouddb-agconnectclouddbexception#getCode
2、云數(shù)據(jù)庫(kù)初始化的示例代碼與執(zhí)行步驟:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-get-started#h1-1594008398022