• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.rowCount105
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.rowCount1243. 当前列号超出范围[0, n - 1],n = resultsetV9.columnCount1254. 当前列数据类型接口不支持。
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对同一数据库表设置的分布式表类型保持一致,属于端端同步的分布式表不可再设置为用于端云的同步表。