1# 关系型数据库错误码 2<!--Kit: ArkData--> 3<!--Subsystem: DistributedDataManager--> 4<!--Owner: @baijidong--> 5<!--Designer: @widecode; @htt1997--> 6<!--Tester: @yippo; @logic42--> 7<!--Adviser: @ge-yafang--> 8 9> **说明:** 10> 11> 以下仅介绍本模块特有错误码,通用错误码请参考[通用错误码说明文档](../errorcode-universal.md)。 12 13## 14800000 内部错误 14 15**错误信息** 16 17Inner error. 18 19**错误描述** 20 21内部错误。 22 23**可能原因** 24 25优先查看错误日志,通过日志可以详细了解错误原因,主要有以下几种: 261. sql执行异常。 272. 内部状态异常。 283. 错误地使用接口。 294. 系统错误,如空指针、内存不足、数据服务异常重启、I/O错误、IPC异常、JS引擎异常等。 30 31**处理步骤** 32 331. 开发者排查sql语句和谓词是否正确使用。 342. 开发者排查是否存在对象关闭后再使用。 353. 开发者排查是否按接口文档正确使用接口。 364. 尝试重试,如果依然无法解决,可以提示用户重启应用、升级应用或升级设备版本。 37 38## 14800001 无效的参数 39 40**错误信息** 41 42Invalid arguments. Possible causes: 1. Parameter is out of valid range; 2. Missing GROUP BY clause. 43 44**错误描述** 45 46无效的参数。 47 48**可能原因** 49 50入参不符合接口要求,如取值范围、长度、格式等。 51 52**处理步骤** 53 54参考接口参数说明修改参数符合要求。 55 56## 14800010 数据库路径不合法 57 58**错误信息** 59 60Failed to open or delete the database by an invalid database path. 61 62**错误描述** 63 64数据库路径不合法,打开或删除数据库失败。 65 66**可能原因** 67 68无效的数据库路径。 69 70**处理步骤** 71 72检查传入数据库路径。 73 74## 14800011 数据库文件异常 75 76**错误信息** 77 78Failed to open the database because it is corrupted. 79 80**错误描述** 81 82数据库异常,打开失败。 83 84**可能原因** 85 86数据库文件不完整、数据库fd被误操作、数据库内存被踩等。 87 88**处理步骤** 89 90如果可以接受数据库数据丢失,则可尝试删除数据库后重新创建。否则,需要备份数据库以便恢复。具体操作可参考[数据库备份与恢复](../../database/data-backup-and-restore.md)。 91 92## 14800012 结果集为空或指定位置不合法 93 94**错误信息** 95 96ResultSet is empty or pointer index is out of bounds. 97 98**错误描述** 99 100结果集为空或指定位置不合法。 101 102**可能原因** 103 104结果集为空或结果集指定行号超出位置范围[0, m - 1],m = resultsetV9.rowCount。 105 106**处理步骤** 107 108检查当前操作得到的结果集是否为空或指定的位置是否合法。 109 110## 14800013 列值为空或列类型与当前调用接口不兼容 111 112**错误信息** 113 114ResultSet is empty or column index is out of bounds. 115 116**错误描述** 117 118列值为空或列类型与当前调用接口不兼容。 119 120**可能原因** 121 1221. 结果集为空。 1232. 结果集当前行号超出范围[0, m - 1],m = resultsetV9.rowCount。 1243. 当前列号超出范围[0, n - 1],n = resultsetV9.columnCount。 1254. 当前列数据类型接口不支持。 126 127**处理步骤** 128 1291. 检查结果集是否为空。 1302. 检查结果集当前行号、列号是否超出范围。 1313. 检查当前列数据类型是否支持。 132 133## 14800014 数据库或结果集关闭 134 135**错误信息** 136 137The RdbStore or ResultSet is already closed. 138 139**错误描述** 140 141数据库或结果集关闭。 142 143**可能原因** 144 145RdbStore或者ResultSet等带有close接口的对象,已调用过close或者没有打开成功。 146 147**处理步骤** 148 149重新打开RdbStore或者重新查询获取得到ResultSet。 150 151## 14800015 数据库没有响应 152 153**错误信息** 154 155The database does not respond. 156 157**错误描述** 158 159数据库没有响应。 160 161**可能原因** 162 163有读、写、attach、detach等操作正在执行,无法在指定的时间(默认2s)内执行当前操作。 164 165**处理步骤** 166 1671. 重新尝试。 1682. 如果是[attach](arkts-apis-data-relationalStore-RdbStore.md#attach12)或[detach](arkts-apis-data-relationalStore-RdbStore.md#detach12)接口,增加waitTime值来增加等待时长。 169 170## 14800016 数据库别名已被使用 171 172**错误信息** 173 174The database alias already exists. 175 176**错误描述** 177 178附加后的数据库别名已被使用。 179 180**可能原因** 181 182附加后的数据库的别名已被使用。 183 184**处理步骤** 185 186不进行附加数据库操作或者修改附加后数据库的别名。 187 188## 14800017 关键配置已被更改 189 190**错误信息** 191 192StoreConfig is changed. 193 194**错误描述** 195 196数据库关键配置已被更改。 197 198**可能原因** 199 200数据库的area(区域),securityLevel(安全级别),数据库读写权限等关键配置发生变化。 201 202**处理步骤** 203 204保持原配置不变或者用原配置导出数据,删除旧库,用新配置创建新库,数据存入新库。 205检查是否使用chmod修改了数据库文件的读写权限,确保当前用户有足够的权限来读写数据库文件。 206 207## 14800018 查询结果没有数据符合条件 208 209**错误信息** 210 211No data meets the condition. 212 213**错误描述** 214 215SQL语句有误,未查询到符合条件的数据。 216 217**可能原因** 218 219没有编写查询正确结果集的SQL语句。 220 221**处理步骤** 222 223编写正确的查询语句或者添加数据库数据之后再做查询。 224 225## 14800019 SQL必须是查询语句 226 227**错误信息** 228 229The SQL must be a query statement. 230 231**错误描述** 232 233SQL必须是查询语句。 234 235**可能原因** 236 237SQL语句不符合规定,导致查询失败。 238 239**处理步骤** 240 241SQL语句不符合规定导致执行失败时,编写满足规约的SQL语句。 242 243## 14800020 密钥损坏或丢失 244 245**错误信息** 246 247The secret key is corrupted or lost. 248 249**错误描述** 250 251获取密钥失败。 252 253**可能原因** 254 255根密钥丢失、无权限读取密钥文件、密钥文件损坏等。 256 257**处理步骤** 258 2591. 检查密钥文件权限、内容是否正常。 2602. 重建或restore恢复数据库。 261 262## 14800021 SQLite:通用错误 263 264**错误信息** 265 266SQLite: Generic error. Possible causes: Insert failed or the updated data does not exist. 267 268**错误描述** 269 270SQLite:通用错误。 271 272**可能原因** 273 274执行sql语句过程中出现错误,如: 2751. 插入或更新未创建的表。 2762. 插入或更新未曾有的列。 2773. 调用未定义的函数等,参见SQLITE_ERROR的相关错误场景。 278 279**处理步骤** 280 281开发者分析错误的SQL语句,找出错误点。 282 283## 14800022 SQLite:异步回调请求被中止 284 285**错误信息** 286 287SQLite: Callback routine requested an abort. 288 289**错误描述** 290 291SQLite:异步回调请求被中止。 292 293**可能原因** 294 2951. 通常发生在使用SQLite的自定义函数机制时,回调被中止执行。 2962. 参见SQLITE_ABORT的相关错误场景。 297 298**处理步骤** 299 300检查SQLite的钩子函数(callback)的实现,确保其正确性。 301 302## 14800023 SQLite:访问权限被拒绝 303 304**错误信息** 305 306SQLite: Access permission denied. 307 308**错误描述** 309 310SQLite访问权限被拒绝。 311 312**可能原因** 313 3141. 操作系统级别的权限问题,意味着SQLite试图访问或修改一个文件,但是没有足够的权限去执行这个操作。 3152. 参见SQLITE_PERM的相关错误场景。 316 317**处理步骤** 318 3191. 确认文件没有只读属性,如果有,去掉只读属性。 3202. 检查文件和文件夹的权限,确保当前用户有足够的权限来读写文件。 3213. 检查文件系统是否为只读,如果是,改为可写状态。 3224. 确认没有其他进程锁定数据库文件,如果有,关闭占用文件的进程。 3235. 在处理权限问题时,确保有足够的权限去更改相关的文件或文件夹权限。 324 325## 14800024 SQLite:数据库文件已锁定 326 327**错误信息** 328 329SQLite: The database file is locked. 330 331**错误描述** 332 333SQLite数据库文件已锁定。 334 335**可能原因** 336 3371. 同一应用两个进程,例如UIability和datashareability同时打开了同一个数据库,进行增删改操作,或者不同应用的同一个group组内的进程通过group组打开同一个数据库,进行增删改操作。 3382. 参见SQLITE_BUSY的相关错误场景。 339 340**处理步骤** 341 3421. 避免进程并发操作数据库。 3432. 等待一段时间重试。 344 345## 14800025 SQLite:数据库中的表被锁定 346 347**错误信息** 348 349SQLite: A table in the database is locked. 350 351**错误描述** 352 353SQLite:数据库中的表被锁定。 354 355**可能原因** 356 3571. 在尝试写入SQLite数据库时,但数据库文件已被另一个进程锁定。这可能是因为数据库处于事务中,或者有其他的锁机制在阻止写入。 3582. 参见SQLITE_LOCKED的相关错误场景。 359 360**处理步骤** 361 3621. 确保没有其他进程或线程正在对数据库文件进行写操作。 3632. 如果使用了事务,请确保在开始事务后及提交事务前不要进行任何写操作。 3643. 检查是否有其他锁机制(如文件锁)可能阻止了写入。 3654. 如果数据库连接对象没有正确关闭,确保在完成数据库操作后关闭连接。 3665. 如果在多线程环境中,确保对数据库操作加锁,防止竞争条件。 367 368## 14800026 SQLite:数据库内存不足 369 370**错误信息** 371 372SQLite: The database is out of memory. 373 374**错误描述** 375 376SQLite:数据库内存不足。 377 378**可能原因** 379 380数据库内存不足,可能是由于数据量过大或内存分配不足导致的。 381 382**处理步骤** 383 384减小数据量或增加内存分配。 385 386## 14800027 SQLite:尝试写入只读数据库 387 388**错误信息** 389 390SQLite: Attempt to write a readonly database. 391 392**错误描述** 393 394SQLite:尝试写入只读数据库。 395 396**可能原因** 397 3981. 尝试写入一个以只读模式打开的SQLite数据库文件时。这可能是因为文件权限问题,文件处于只读文件系统中或者数据库被标记为只读。 3992. 参见SQLITE_READONLY的相关错误场景。 400 401**处理步骤** 402 4031. 确保有足够的权限去写入数据库文件。 4042. 如果文件系统是只读的,需要将其改为读写模式。 4053. 确认在打开数据库时没有使用只读模式参数。 406 407## 14800028 SQLite:发生了某种磁盘I/O错误 408 409**错误信息** 410 411SQLite: Some kind of disk I/O error occurred. 412 413**错误描述** 414 415SQLite发生了某种磁盘I/O错误。 416 417**可能原因** 418 419可能是由于多种原因造成的,包括但不限于: 4201. 文件不存在。 4212. 文件是只读的。 4223. 磁盘空间不足。 4234. 文件损坏。 4245. 参见SQLITE_IOERR的相关错误场景。 425 426**处理步骤** 427 4281. 检查文件路径是否正确,文件是否存在。 4292. 确保文件没有设置为只读。 4303. 检查磁盘空间是否足够,并清理不必要的文件释放空间。 4314. 检查文件的权限,确保应用程序有足够的权限去读写文件。 432 433## 14800029 SQLite:数据库已满 434 435**错误信息** 436 437SQLite: The database is full. 438 439**错误描述** 440 441SQLite数据库已满。 442 443**可能原因** 444 445数据库已满,可能是由于数据量过大或磁盘空间不足导致的。 446 447**处理步骤** 448 449减小数据量或增加磁盘空间。 450 451## 14800030 SQLite:无法打开数据库文件 452 453**错误信息** 454 455SQLite: Unable to open the database file. 456 457**错误描述** 458 459SQLite:无法打开数据库文件。 460 461**可能原因** 462 4631. 文件不存在,并且创建新数据库失败。 4642. 文件存在,但是数据库文件损坏。 4653. 文件权限问题,SQLite无法读写文件。 4664. 磁盘空间不足。 4675. 参见SQLITE_CANTOPEN的相关错误场景。 468 469**处理步骤** 470 4711. 确认数据库文件路径是否正确,检查文件权限,确保应用程序有足够的权限去读写文件。 4722. 确认磁盘空间足够。 473 474## 14800031 SQLite:TEXT或BLOB超出大小限制 475 476**错误信息** 477 478SQLite: TEXT or BLOB exceeds size limit. 479 480**错误描述** 481 482SQLite:TEXT或BLOB超出大小限制。 483 484**可能原因** 485 4861. 查询的结果集超过了SQLite所能处理的大小限制。 4872. 参见SQLITE_TOOBIG的相关错误场景。 488 489**处理步骤** 490 491将大查询分解为多个小查询,每次处理一部分数据。 492 493## 14800032 SQLite:由于违反约束而中止 494 495**错误信息** 496 497SQLite: Abort due to constraint violation. 498 499**错误描述** 500 501SQLite:由于违反约束而中止。 502 503**可能原因** 504 5051. 尝试写入SQLite数据库时违反了数据库的完整性约束条件。 5062. 参见SQLITE_CONSTRAINT的相关错误场景。 507 508**处理步骤** 509 510检查试图插入或更新的数据是否违反了上述约束。 511 512## 14800033 SQLite:数据类型不匹配 513 514**错误信息** 515 516SQLite: Data type mismatch. 517 518**错误描述** 519 520SQLite:数据类型不匹配。 521 522**可能原因** 523 5241. 执行一个SQL语句时,其中涉及的数据类型与数据库中存储的数据类型不匹配。 5252. 参见SQLITE_MISMATCH的相关错误场景。 526 527**处理步骤** 528 529检查SQL语句中涉及的列的数据类型,确保插入、更新或查询的数据类型与列的数据类型相匹配。 530 531## 14800034 SQLite:库使用不正确 532 533**错误信息** 534 535SQLite: Library used incorrectly. 536 537**错误描述** 538 539SQLite:库使用不正确。 540 541**可能原因** 542 5431. 表示数据库操作或者使用上下文不正确。这个错误通常发生在以下几种情况: 544 - 数据库还没有完成操作就进行下一个操作。 545 - 在一个数据库连接已经关闭后,继续对该连接进行操作。 546 - 使用了已经释放或无效的数据库对象。 5472. 参见SQLITE_MISUSE的相关错误场景。 548 549**处理步骤** 550 5511. 确保数据库操作之间有适当的同步,比如使用锁或其他同步机制。 5522. 确保数据库连接在使用前是打开的,在结束操作后是关闭的。 5533. 确保所有数据库对象在使用完毕后都已正确释放。 554 555## 14800047 WAL文件大小超过默认上限 556 557**错误信息** 558 559The WAL file size exceeds the default limit. 560 561**错误描述** 562 563WAL文件大小超过默认上限(512MB)。 564 565**可能原因** 566 567在开启读事务或者结果集未关闭的情况下,不断执行增删改操作,导致WAL文件大小超过默认上限。 568 569**处理步骤** 570 571检查结果集或者事务是否未关闭。 572 573关闭所有的结果集或者事务。 574 575## 14800050 获取订阅服务失败 576 577**错误信息** 578 579Failed to obtain the subscription service. 580 581**错误描述** 582 583获取订阅服务失败。 584 585**可能原因** 586 587当前平台不支持订阅服务。 588 589**处理步骤** 590 591需要在当前平台部署订阅服务。 592 593## 14801001 上下文环境非Stage模型 594 595**错误信息** 596 597The operation is supported in the stage model only. 598 599**错误描述** 600 601该操作仅支持Stage模型。 602 603**可能原因** 604 605当前上下文环境非Stage模型。 606 607**处理步骤** 608 609切换当前上下文环境,使用Stage模型。 610 611## 14801002 storeConfig中传入的dataGroupId参数非法 612 613**错误信息** 614 615Invalid data group ID. 616 617**错误描述** 618 619使用非法dataGroupId参数。 620 621**可能原因** 622 623使用的dataGroupId不是从应用市场正常申请的。 624 625**处理步骤** 626 627从应用市场申请dataGroupId,并正确传入该参数。 628 629## 14800051 分布式表类型不匹配 630 631**错误信息** 632 633The type of the distributed table does not match. 634 635**错误描述** 636 637对同一数据库表设置的分布式表类型前后不一致。 638 639**可能原因** 640 641对同一数据库表设置的分布式表类型前后不一致,分布式表类型可见[DistributedType](arkts-apis-data-relationalStore-e.md#distributedtype10)。 642 643**处理步骤** 644 645对同一数据库表设置的分布式表类型保持一致,属于端端同步的分布式表不可再设置为用于端云的同步表。