HarmonyOS 鸿蒙Next 云数据库的插入报错Code: 1008230002, message: schema parse fail or objectTypeName error.

HarmonyOS 鸿蒙Next 云数据库的插入报错Code: 1008230002, message: schema parse fail or objectTypeName error. 按照云数据库的指南操作,集成了Serverless的云数据库,试了简单的插入数据到数据表报错
Code: 1008230002, message: schema parse fail or objectTypeName error.

使用的SDK是api12, schema.json放在了rawfile 目录, 而且也是最新的schema文件.

云数据库插入代码如下:

async upsert(uid:string,userPhone:string) {
  try {
    let databaseZone = cloudDatabase.zone("DataStorage");
    let userInfo = new UserInfo();
    userInfo.uid = uid
    userInfo.userPhone = userPhone
    userInfo.userEmail = ''
    userInfo.userPhotoUrl = ''
    userInfo.userPasswordSetted = true
    let record = await databaseZone.upsert(userInfo);
    console.info(`Succeeded in upserting an userInfo , result: ` + JSON.stringify(record));
  } catch (err) {
    console.info(`The uid is ` + uid);
    console.info(`The userPhone is ` + userPhone);
    console.error(`Failed to upsert an userInfo , Code: ${err.code}, message: ${err.message}`);
  }
}

最新schema.json代码如下:

{
  "schemaVersion": 6,
  "permissions": [
    {
      "permissions": [
        {
          "role": "World",
          "rights": [
            "Read"
          ]
        },
        {
          "role": "Authenticated",
          "rights": [
            "Read",
            "Upsert"
          ]
        },
        {
          "role": "Creator",
          "rights": [
            "Read",
            "Upsert",
            "Delete"
          ]
        },
        {
          "role": "Administrator",
          "rights": [
            "Read",
            "Upsert",
            "Delete"
          ]
        }
      ],
      "objectTypeName": "UserInfo"
    }
  ],
  "objectTypes": [
    {
      "indexes": [],
      "objectTypeName": "UserInfo",
      "fields": [
        {
          "isNeedEncrypt": false,
          "fieldName": "uid",
          "notNull": true,
          "isSensitive": false,
          "belongPrimaryKey": true,
          "fieldType": "String"
        },
        {
          "isNeedEncrypt": false,
          "fieldName": "userPhone",
          "notNull": false,
          "isSensitive": false,
          "belongPrimaryKey": false,
          "fieldType": "String"
        },
        {
          "isNeedEncrypt": false,
          "fieldName": "userEmail",
          "notNull": false,
          "isSensitive": false,
          "belongPrimaryKey": false,
          "fieldType": "String"
        },
        {
          "isNeedEncrypt": false,
          "fieldName": "userPhotoUrl",
          "notNull": false,
          "isSensitive": false,
          "belongPrimaryKey": false,
          "fieldType": "String"
        },
        {
          "isNeedEncrypt": false,
          "fieldName": "userPasswordSetted",
          "notNull": false,
          "isSensitive": false,
          "belongPrimaryKey": false,
          "fieldType": "Boolean"
        }
      ]
    }
  ]
}

更多关于HarmonyOS 鸿蒙Next 云数据库的插入报错Code: 1008230002, message: schema parse fail or objectTypeName error.的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

云数据库指南文档的插入数据库代码例子有坑,我参照新建端云一体化的例子做了一个数据model如下,这样就能插入数据到云数据库了。

import { cloudDatabase } from '@kit.CloudFoundationKit';

class UserInfo extends cloudDatabase.DatabaseObject{
  naturalbase_ClassName(): string {
    return "UserInfo";
  }
  uid: string = '[]';
  userPhone: string = '';
  userEmail: string = '';
  userPhotoUrl: string = '';
  userPasswordSetted: boolean = true;
}

export { UserInfo };

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


看上去好像没啥问题,检查下是不是version6版本,修改了字段名称,或增加了结构?

提供一些思路,可以尝试一下:

  1. 浏览器进行AGC云数据库后台,检查已有数据结构是否还正常?object的名称和类型是否对应?检查已有数据列表是否还正常?
  2. 用浏览器使用导入json文本插入一条测试一下。
  3. 导出备份旧数据,清空旧数据表,重新再使用IDE插入测试一下。

该错误代码 1008230002 表示在HarmonyOS鸿蒙Next云数据库操作中,插入数据时遇到了模式解析失败或对象类型名称错误的问题。具体原因可能是:

  1. 模式解析失败:数据库的模式定义与插入的数据结构不匹配,可能是字段类型、字段名称或数据格式不符合预期。
  2. 对象类型名称错误:在插入数据时,指定的对象类型名称与数据库中定义的类型名称不一致,或者该类型名称不存在。

解决方法:

  • 检查插入数据的结构是否与数据库模式定义一致。
  • 确认对象类型名称是否正确,确保与数据库中定义的类型名称匹配。

如果问题持续,建议检查数据库模式定义和插入数据的代码逻辑。

回到顶部