【问题背景】

近期越来越多的开发者通过SDK使用云数据库,云数据库是一款支持端云数据协同管理、可扩展的Serverless数据库产品,提供简单易用的多平台原生SDK,您的应用可以通过SDK直接访问云侧数据库。同时,云数据库还支持通过Server SDK直接管理云侧数据,实现云侧数据的高效管理。同时在集成与开发过程中可能会遇到各种问题,下面我来汇总一些常见的问题供大家来参考。


【问题1】

使用云数据库HarmonyOS(JAVA)SDK,调用mCloudDB = AGConnectCloudDB.getInstance(instance,AGConnectAuth.getInstance(instance));方法时闪退报错。报错信息如下:

Reason:java.lang.UnsatisfiedLinkError: No implementation found for void com.huawei.agconnect.cloud.database.AGConnectCloudDB.nativeGetInstance(com.huawei.agconnect.cloud.database.CertificateService, java.lang.String, java.lang.String, java.lang.String, java.lang.String) (tried Java_com_huawei_agconnect_cloud_database_AGConnectCloudDB_nativeGetInstance and Java_com_huawei_agconnect_cloud_database_AGConnectCloudDB_nativeGetInstance__Lcom_huawei_agconnect_cloud_database_CertificateService_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2)

【解决方案】

目前云数据库HarmonyOS(JAVA)只支持api6的arm v8的设备进行测试,开发者使用的是模拟器,肯定是不支持的,需要使用API 6的远程设备或者真机进行调试。


【问题2】

云数据库服务端如何实现多表连接查询。

【解决方案】

目前云数据库暂不支持多表联查接口,需要实现相关功能的话需要开发者自己构造demo。


【问题3】

调用executeUpsert()接口想云数据库中写入数据,日志显示执行成功,但是云数据库页面没有数据。

【解决方案】

查看了全量日志,有这么一条警告:W/CertificateService: [getUserInfo] The AGConnectUser is null.该条日志显示用户未登录,在操作云数据库前需要调用AUTH SDK登录用户,才能获取权限,需要开发者检查写入数据时机,是不是没在回调里面处理,登录还没有完成就操作数据库了。


【问题4】

服务端通过REST API 接口使用云数据时,如何实现像Android SDK这样的复合查询:两个字段用or连接,只要满足其中一个就可以。

【解决方案】

REST API支持or语法的请求报文可以参考如下示例:

curl --location 'https://lfagcgwtest01cn.hwcloudtest.cn:18062/agc/apigw/clouddb/clouddbservice/sync/query?_v=4' \

--header 'client_id: 117************1952' \

--header 'productId: 244************846' \

--header 'projectId: 244************846' \

--header 'agcTeamId: 413************2377' \

--header 'Content-Type: application/json' \

--header 'Authorization: Bearer ************' \

--data '{

"msgInfo": {

"type": 5,

"opStore": {

"storeName": "store01"

}

},

"clientInfo": {

"appVer": 3

},

"queryReqMsg": {

"queryType" : 0,

"queryTable" : "Student",

"queryCond" : "{\"queryConditions\":[{\"conditionType\":\"EqualTo\",\"fieldName\":\"id\",\"value\":\"00002\"},{\"conditionType\":\"Or\"},{\"conditionType\":\"EqualTo\",\"fieldName\":\"age\",\"value\":\"40\"},{\"conditionType\":\"Limit\",\"value\":{\"number\":10,\"offset\":0}}]}"

}

}'


【问题5】

使用华为认证手机号登录以后,user不为空,初始化了数据库,创建新的数据对象时提示没有权限,错误码:15。

【解决方案】

不要重新初始化AGC的instance,而是使用AGCInstance.getInstance来获取默认的instance。请参考:

AGConnectInstance instance = AGConnectInstance.getInstance();
mCloudDB = AGConnectCloudDB.getInstance();

【AGC】云数据库开发常见问题汇总_云数据库