HarmonyOS 鸿蒙Next 数据库问题 error: schema parse fail or objectTypeName error

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

HarmonyOS 鸿蒙Next 数据库问题 error: schema parse fail or objectTypeName error

在我的主页面数据库操作对象db可以正常使用,使用pushUrl或replaceUrl页面跳转至第二页面后 数据库操作对象作为第二个页面的成员变量操作无效。检查控制台发现报错为 error: Error: schema parse fail or objectTypeName error. 百度了一圈没有解决方法。经排查该对象存在,可以正常调用方法,但是关联到数据库的方法会出现报错,贴上一张被调用方法的实现f1b40c2ba4ff39efaead67509a52431.png


更多关于HarmonyOS 鸿蒙Next 数据库问题 error: schema parse fail or objectTypeName error的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我这边本地写了个简单的upsert demo,没有复现你说的这种情况呢。能提供下你这边能复现问题的demo代码吗?光看报错看不出来原因。demo如下:

import { BookInfo } from '../entity/BookInfo';
import { cloudDatabase } from '@kit.CloudFoundationKit';
import { router } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State message: string = '插入数据';
  @State bookName: string = '初始值';
  databaseZone = cloudDatabase.zone("QuickStartDemo");

  build() {
    Column() {
      Text("上级页面")
        .onClick(() => {
          router.pushUrl({
            url: 'pages/Test1',
            params: {}
          })
        })
      Text(this.message)
        .onClick(() => {
          this.upsert()
        })
    }
    .height('100%')
    .width('100%')
  }

  async upsert() {
    try {
      //let databaseZone = cloudDatabase.zone("QuickStartDemo");
      let book = new BookInfo();
      book.id = 4;
      book.bookName = '左传2';
      book.price = 100.0;
      let record = await this.databaseZone.upsert(book);
      console.info(`Succeeded in upserting a book , result: ` + JSON.stringify(record));
    } catch (err) {
      console.error(`Failed to upsert a book , Code: ${err.code}, message: ${err.message}`);
    }
  }
}
import { BookInfo } from '../entity/BookInfo';
import { cloudDatabase } from '@kit.CloudFoundationKit';
import { router } from '@kit.ArkUI';

@Entry
@Component
struct Test1 {
  @State message: string = '插入数据';

  build() {
    Column() {
      Text("下级页面")
        .onClick(() => {
          router.back()
        })
      Text(this.message)
        .onClick(() => {
          this.upsert()
        })
    }
    .height('100%')
    .width('100%')
  }

  async upsert() {
    try {
      let databaseZone = cloudDatabase.zone("QuickStartDemo");
      let book = new BookInfo();
      book.id = 5;
      book.bookName = '左传2';
      book.price = 100.0;
      let record = await databaseZone.upsert(book);
      console.info(`Succeeded in upserting a book , result: ` + JSON.stringify(record));
    } catch (err) {
      console.error(`Failed to upsert a book , Code: ${err.code}, message: ${err.message}`);
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 数据库问题 error: schema parse fail or objectTypeName error的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next数据库中遇到“error: schema parse fail or objectTypeName error”的问题,通常表明在解析数据库模式(schema)时遇到了问题,或者指定的对象类型名称(objectTypeName)有误。

针对此错误,首先需要检查以下几个方面:

  1. Schema文件:确保数据库模式文件(如JSON或XML格式)的语法正确无误,包括属性名称、数据类型以及结构定义等。

  2. 对象类型名称:检查代码中引用的对象类型名称是否与Schema文件中定义的名称完全一致,包括大小写。

  3. Schema加载:确认在应用程序中正确加载了Schema文件,且路径无误。

  4. 版本兼容性:确保使用的数据库库或框架版本与HarmonyOS鸿蒙Next的要求兼容。

  5. 权限问题:检查应用程序是否有足够的权限去访问和解析Schema文件。

如果以上检查均无误,但问题依旧存在,可能是由于数据库库本身的bug或其他未知原因。此时,可以尝试使用更详细的日志记录功能来捕捉更多的错误信息,以便进一步分析。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!