1# 关系型数据库错误码
2
3> **说明:**
4>
5> 以下仅介绍本模块特有错误码,通用错误码请参考[通用错误码说明文档](../errorcode-universal.md)。
6
7##  14800000 内部错误
8
9**错误信息**
10
11Inner error.
12
13**错误描述**
14
15内部错误。
16
17**可能原因**
18
19优先查看错误日志,通过日志可以详细了解错误原因,主要有以下几种:
201. sql执行异常。
212. 内部状态异常。
223. 错误地使用接口。
234. 系统错误,如空指针、内存不足、数据服务异常重启、I/O错误、IPC异常、JS引擎异常等。
24
25**处理步骤**
26
271. 开发者排查sql语句和谓词是否正确使用。
282. 开发者排查是否存在对象关闭后再使用。
293. 开发者排查是否按接口文档正确使用接口。
304. 尝试重试,如果依然无法解决,可以提示用户重启应用、升级应用或升级设备版本。
31
32## 14800010 数据库路径不合法
33
34**错误信息**
35
36Invalid database path.
37
38**错误描述**
39
40数据库路径不合法。
41
42**可能原因**
43
44无效的数据库路径。
45
46**处理步骤**
47
48检查传入数据库路径。
49
50## 14800011 数据库文件损坏
51
52**错误信息**
53
54Database corrupted.
55
56**错误描述**
57
58该错误码表示在调用数据库增、删、查、数据同步等接口时,数据库已损坏。
59
60**可能原因**
61
62调用数据库增、删、查、数据同步等接口操作数据库时,数据库文件已损坏。
63
64**处理步骤**
65
66如果可以接受数据库数据丢失,则可尝试删除数据库后重新创建。否则,需要备份数据库以便恢复。具体操作可参考[数据库备份与恢复](../../database/data-backup-and-restore.md)。
67
68## 14800012 结果集为空或指定位置不合法
69
70**错误信息**
71
72Row out of bounds.
73
74**错误描述**
75
76结果集为空或指定位置不合法。
77
78**可能原因**
79
80结果集为空或结果集指定行号超出位置范围[0, m - 1],m = resultsetV9.rowCount81
82**处理步骤**
83
84检查当前操作得到的结果集是否为空或指定的位置是否合法。
85
86## 14800013 列值为空或列类型与当前调用接口不兼容
87
88**错误信息**
89
90Column out of bounds.
91
92**错误描述**
93
94列值为空或列类型与当前调用接口不兼容。
95
96**可能原因**
97
981. 结果集为空。
992. 结果集当前行号超出范围[0, m - 1],m = resultsetV9.rowCount1003. 当前列号超出范围[0, n - 1],n = resultsetV9.columnCount1014. 当前列数据类型接口不支持。
102
103**处理步骤**
104
1051. 检查结果集是否为空。
1062. 检查结果集当前行号、列号是否超出范围。
1073. 检查当前列数据类型是否支持。
108
109## 14800014 数据库或结果集关闭
110
111**错误信息**
112
113Already closed.
114
115**错误描述**
116
117数据库或结果集关闭。
118
119**可能原因**
120
121RdbStore或者ResultSet等带有close接口的对象,已调用过close或者没有打开成功。
122
123**处理步骤**
124
125重新打开RdbStore或者重新查询获取得到ResultSet。
126
127## 14800015 数据库没有响应
128
129**错误信息**
130
131The database does not respond.
132
133**错误描述**
134
135数据库没有响应。
136
137**可能原因**
138
139有读、写、attach、detach等操作正在执行,无法在指定的时间(默认2s)内执行当前操作。
140
141**处理步骤**
142
1431. 重新尝试
1442. 如果是[attach](./js-apis-data-relationalStore.md#attach12)或[detach](./js-apis-data-relationalStore.md#detach12)接口,增加waitTime值来增加等待时长。
145
146## 14800016 数据库别名已被使用
147
148**错误信息**
149
150The database alias already exists.
151
152**错误描述**
153
154附加后的数据库别名已被使用。
155
156**可能原因**
157
158附加后的数据库的别名已被使用。
159
160**处理步骤**
161
162不进行附加数据库操作或者修改附加后数据库的别名。
163
164## 14800017 关键配置已被更改
165
166**错误信息**
167
168Config changed.
169
170**错误描述**
171
172数据库关键配置已被更改。
173
174**可能原因**
175
176数据库的area(区域), securityLevel(安全级别)等关键配置发生变化。
177
178**处理步骤**
179
180保持原配置不变或者用原配置导出数据,删除旧库,用新配置创建新库,数据存入新库。
181
182## 14800018 查询结果没有数据符合条件
183
184**错误信息**
185
186No data meets the condition.
187
188**错误描述**
189
190SQL语句有误,未查询到符合条件的数据。
191
192**可能原因**
193
194没有编写查询正确结果集的SQL语句。
195
196**处理步骤**
197
198编写正确的查询语句或者添加数据库数据之后再做查询。
199
200## 14800019 SQL必须是查询语句
201
202**错误信息**
203
204The SQL must be a query statement.
205
206**错误描述**
207
208SQL必须是查询语句。
209
210**可能原因**
211
212SQL语句不符合规定,导致查询失败。
213
214**处理步骤**
215
216SQL语句不符合规定导致执行失败时,编写满足规约的SQL语句。
217
218## 14800020 密钥损坏或丢失
219
220**错误信息**
221
222The secret key is corrupted or lost.
223
224**错误描述**
225
226获取密钥失败。
227
228**可能原因**
229
230根密钥丢失、无权限读取密钥文件、密钥文件损坏等。
231
232**处理步骤**
233
2341.检查密钥文件权限、内容是否正常。
2352.重建或restore恢复数据库。
236
237## 14800021 SQLite:通用错误
238
239**错误信息**
240
241SQLite: Generic error.
242
243**错误描述**
244
245SQLite:通用错误。
246
247**可能原因**
248
249执行sql语句过程中出现错误,如:
2501. 插入或更新未创建的表。
2512. 插入或更新未曾有的列。
2523. 调用未定义的函数等,参见SQLITE_ERROR的相关错误场景。
253
254**处理步骤**
255
256开发者分析错误的SQL语句,找出错误点。
257
258## 14800022 SQLite:异步回调请求被中止
259
260**错误信息**
261
262SQLite: Callback routine requested an abort.
263
264**错误描述**
265
266SQLite:异步回调请求被中止。
267
268**可能原因**
269
2701. 通常发生在使用SQLite的自定义函数机制时,回调被中止执行。
2712. 参见SQLITE_ABORT的相关错误场景。
272
273**处理步骤**
274
275检查SQLite的钩子函数(callback)的实现,确保其正确性。
276
277## 14800023 SQLite:访问权限被拒绝
278
279**错误信息**
280
281SQLite: Access permission denied.
282
283**错误描述**
284
285SQLite访问权限被拒绝。
286
287**可能原因**
288
2891. 操作系统级别的权限问题,意味着SQLite试图访问或修改一个文件,但是没有足够的权限去执行这个操作。
2902. 参见SQLITE_PERM的相关错误场景。
291
292**处理步骤**
293
2941. 确认文件没有只读属性,如果有,去掉只读属性。
2952. 检查文件和文件夹的权限,确保当前用户有足够的权限来读写文件。
2963. 检查文件系统是否为只读,如果是,改为可写状态。
2974. 确认没有其他进程锁定数据库文件,如果有,关闭占用文件的进程。
2985. 在处理权限问题时,确保有足够的权限去更改相关的文件或文件夹权限。
299
300## 14800024 SQLite:数据库文件已锁定
301
302**错误信息**
303
304SQLite: The database file is locked.
305
306**错误描述**
307
308SQLite数据库文件已锁定。
309
310**可能原因**
311
3121. 同一应用两个进程,例如UIability和datashareability同时打开了同一个数据库,进行增删改操作,或者不同应用的同一个group组内的进程通过group组打开同一个数据库,进行增删改操作。
3132. 参见SQLITE_BUSY的相关错误场景。
314
315**处理步骤**
316
3171. 避免进程并发操作数据库。
3182. 等待一段时间重试。
319
320## 14800025 SQLite:数据库中的表被锁定
321
322**错误信息**
323
324SQLite: A table in the database is locked.
325
326**错误描述**
327
328SQLite:数据库中的表被锁定。
329
330**可能原因**
331
3321. 在尝试写入SQLite数据库时,但数据库文件已被另一个进程锁定。这可能是因为数据库处于事务中,或者有其他的锁机制在阻止写入。
3332. 参见SQLITE_LOCKED的相关错误场景。
334
335**处理步骤**
336
3371. 确保没有其他进程或线程正在对数据库文件进行写操作。
3382. 如果使用了事务,请确保在开始事务后及提交事务前不要进行任何写操作。
3393. 检查是否有其他锁机制(如文件锁)可能阻止了写入。
3404. 如果数据库连接对象没有正确关闭,确保在完成数据库操作后关闭连接。
3415. 如果在多线程环境中,确保对数据库操作加锁,防止竞争条件。
342
343## 14800026 SQLite:数据库内存不足
344
345**错误信息**
346
347SQLite: The database is out of memory.
348
349**错误描述**
350
351SQLite:数据库内存不足。
352
353**可能原因**
354
355数据库内存不足,可能是由于数据量过大或内存分配不足导致的。
356
357**处理步骤**
358
359减小数据量或增加内存分配。
360
361## 14800027 SQLite:尝试写入只读数据库
362
363**错误信息**
364
365SQLite: Attempt to write a readonly database.
366
367**错误描述**
368
369SQLite:尝试写入只读数据库。
370
371**可能原因**
372
3731. 尝试写入一个以只读模式打开的SQLite数据库文件时。这可能是因为文件权限问题,文件处于只读文件系统中或者数据库被标记为只读。
3742. 参见SQLITE_READONLY的相关错误场景。
375
376**处理步骤**
377
3781. 确保有足够的权限去写入数据库文件。
3792. 如果文件系统是只读的,需要将其改为读写模式。
3803. 确认在打开数据库时没有使用只读模式参数。
381
382## 14800028 SQLite:发生了某种磁盘I/O错误
383
384**错误信息**
385
386SQLite: Some kind of disk I/O error occurred.
387
388**错误描述**
389
390SQLite发生了某种磁盘I/O错误。
391
392**可能原因**
393
394可能是由于多种原因造成的,包括但不限于:
3951. 文件不存在。
3962. 文件是只读的。
3973. 磁盘空间不足。
3984. 文件损坏。
3995. 参见SQLITE_IOERR的相关错误场景。
400
401**处理步骤**
402
4031. 检查文件路径是否正确,文件是否存在。
4042. 确保文件没有设置为只读。
4053. 检查磁盘空间是否足够,并清理不必要的文件释放空间。
4064. 检查文件的权限,确保应用程序有足够的权限去读写文件。
407
408## 14800029 SQLite:数据库已满
409
410**错误信息**
411
412SQLite: The database is full.
413
414**错误描述**
415
416SQLite数据库已满。
417
418**可能原因**
419
420数据库已满,可能是由于数据量过大或磁盘空间不足导致的。
421
422**处理步骤**
423
424减小数据量或增加磁盘空间。
425
426## 14800030 SQLite:无法打开数据库文件
427
428**错误信息**
429
430SQLite: Unable to open the database file.
431
432**错误描述**
433
434SQLite:无法打开数据库文件。
435
436**可能原因**
437
4381. 文件不存在,并且创建新数据库失败。
4392. 文件存在,但是数据库文件损坏。
4403. 文件权限问题,SQLite无法读写文件。
4414. 磁盘空间不足。
4425. 参见SQLITE_CANTOPEN的相关错误场景。
443
444**处理步骤**
445
4461. 确认数据库文件路径是否正确,检查文件权限,确保应用程序有足够的权限去读写文件。
4472. 确认磁盘空间足够。
448
449## 14800031 SQLite:TEXT或BLOB超出大小限制
450
451**错误信息**
452
453SQLite: TEXT or BLOB exceeds size limit.
454
455**错误描述**
456
457SQLite:TEXT或BLOB超出大小限制。
458
459**可能原因**
460
4611. 查询的结果集超过了SQLite所能处理的大小限制。
4622. 参见SQLITE_TOOBIG的相关错误场景。
463
464**处理步骤**
465
466将大查询分解为多个小查询,每次处理一部分数据。
467
468## 14800032 SQLite:由于违反约束而中止
469
470**错误信息**
471
472SQLite: Abort due to constraint violation.
473
474**错误描述**
475
476SQLite:由于违反约束而中止。
477
478**可能原因**
479
4801. 尝试写入SQLite数据库时违反了数据库的完整性约束条件。
4812. 参见SQLITE_CONSTRAINT的相关错误场景。
482
483**处理步骤**
484
485检查试图插入或更新的数据是否违反了上述约束。
486
487## 14800033 SQLite:数据类型不匹配
488
489**错误信息**
490
491SQLite: Data type mismatch.
492
493**错误描述**
494
495SQLite:数据类型不匹配。
496
497**可能原因**
498
4991. 执行一个SQL语句时,其中涉及的数据类型与数据库中存储的数据类型不匹配。
5002. 参见SQLITE_MISMATCH的相关错误场景。
501
502**处理步骤**
503
504检查SQL语句中涉及的列的数据类型,确保插入、更新或查询的数据类型与列的数据类型相匹配。
505
506## 14800034 SQLite:库使用不正确
507
508**错误信息**
509
510SQLite: Library used incorrectly.
511
512**错误描述**
513
514SQLite:库使用不正确。
515
516**可能原因**
517
5181. 表示数据库操作或者使用上下文不正确。这个错误通常发生在以下几种情况:
519    - 数据库还没有完成操作就进行下一个操作。
520    - 在一个数据库连接已经关闭后,继续对该连接进行操作。
521    - 使用了已经释放或无效的数据库对象。
5222. 参见SQLITE_MISUSE的相关错误场景。
523
524**处理步骤**
525
5261. 确保数据库操作之间有适当的同步,比如使用锁或其他同步机制。
5272. 确保数据库连接在使用前是打开的,在结束操作后是关闭的。
5283. 确保所有数据库对象在使用完毕后都已正确释放。
529
530## 14800047 WAL文件大小超过默认上限
531
532**错误信息**
533
534The WAL file size exceeds the default limit.
535
536**错误描述**
537
538WAL文件大小超过默认上限(512MB)。
539
540**可能原因**
541
542在开启读事务或者结果集未关闭的情况下,不断执行增删改操作,导致WAL文件大小超过默认上限。
543
544**处理步骤**
545
546检查结果集或者事务是否未关闭。
547
548关闭所有的结果集或者事务。
549
550## 14800050 获取订阅服务失败
551
552**错误信息**
553
554Failed to obtain the subscription service.
555
556**错误描述**
557
558获取订阅服务失败。
559
560**可能原因**
561
562当前平台不支持订阅服务。
563
564**处理步骤**
565
566需要在当前平台部署订阅服务。
567
568## 14801001 上下文环境非Stage模型
569
570**错误信息**
571
572The operation is supported in the stage model only.
573
574**错误描述**
575
576该操作仅支持Stage模型。
577
578**可能原因**
579
580当前上下文环境非Stage模型。
581
582**处理步骤**
583
584切换当前上下文环境,使用Stage模型。
585
586## 14801002 storeConfig中传入的dataGroupId参数非法
587
588**错误信息**
589
590Invalid data ground ID.
591
592**错误描述**
593
594使用非法dataGroupId参数。
595
596**可能原因**
597
598使用的dataGroupId不是从应用市场正常申请的。
599
600**处理步骤**
601
602从应用市场申请dataGroupId,并正确传入该参数。
603
604## 14800051 分布式表类型不匹配
605
606**错误信息**
607
608The type of the distributed table does not match.
609
610**错误描述**
611
612对同一数据库表设置的分布式表类型前后不一致。
613
614**可能原因**
615
616对同一数据库表设置的分布式表类型前后不一致,分布式表类型可见[DistributedType](js-apis-data-relationalStore.md#distributedtype10)。
617
618**处理步骤**
619
620对同一数据库表设置的分布式表类型保持一致,属于端端同步的分布式表不可再设置为用于端云的同步表。