HarmonyOS 鸿蒙Next使用关系型数据库储存失败

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next使用关系型数据库储存失败

先描述一下,首先valueBuck里面有三个字段,一个手机号,一个json字符串,一个时间戳,前2次都存成功了,这是第3次,失败了,报错如下,

前2次存的格式跟这次相差无几,但是就第三次开始就存失败了,为啥啊,首先排除磁盘空间不够的问题,新手机X5,还有几百G的空间

你说一次都存不成功还好说,我直接换其他方式做了,但是他能成功2次,我真的迷了

cke_155.png

7 回复

鸿蒙数据库使用有些限制要小心,不然容易引发问题,以下为文档中所述:

  • 数据库中有4个读连接和1个写连接,数据库同一时间只能支持一个写操作;
  • 建议一条数据不要超过2M。超出该大小,插入成功,读取失败。

==》由于操作是异步,代码中要小心考虑写操作可能出现并发的场景,如多个记录更新用循环加异步接口就可能出现写操作并发引起报错,因此要控制好多个记录更新时的次序。

目前只写入一次,没有多个一起

那就得看代码了;可在代码中加入日志打印写入时间、写入的传递的数据、写入完成时间;结合代码一起判断原因; 另:发现你代码有些可调整的: 1、Promise中最好用两个参数((resolve, reject) => {}); 分别处理成功和失败状态; 2、reslove 是不是要用的是 resolve 3、if (err) 下应该用 reject 而非 resolve。

手机上回复,不方便截图。可以先排查下,第三次的数据和前两次的主键是否重名,如果重名需要使用修改接口,使用新建接口是存不进去的。是不是真的没存进去,是读不到还是没有,这个需要确定下,首先要确定是否正确打开数据库,不同context创建的数据库不是同一个,例如:两个不同的ability中获取同一个名称的数据库,其实是不同的数据库。不要用await试一下,就直接用异步,估计这个的可能性不大,但是用await确实可能会出问题。其他的,晚上回去详细找下文档,看看有没有其他方面的问题,问题描述不太精准,例如:存储使用的是哪个接口等等。

主键是自增id,我没有操作这个

多方面排查下吧,事物,主键,数据

HarmonyOS 鸿蒙Next使用关系型数据库储存失败可能由多种原因引起,包括数据库连接问题、SQL语句错误、数据类型不匹配、权限不足或数据库服务异常等。请检查数据库URL、用户名、密码等连接信息是否正确,确保SQL语句语法正确且数据类型匹配,同时确认应用已声明必要的存储权限。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部