【问题背景】
近期越来越多的开发者通过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();