c - SQLite:如何以编程方式修复格式错误的数据库

标签 c database sqlite

我正在将 SQLite3 用于嵌入式项目。 我必须访问 sqlite 数据库的并发进程。

第一个进程将在数据库中插入(大约每秒 50 个)。 第二个进程将尝试从数据库中删除(每秒大约 100 个)。

基本上,我的第一个进程将从网络收集数据,并将其存储在数据库中。 第二个将从数据库中弹出,使用 GPRS 连接发送数据。

我尝试每秒弹出 100 个元素(而我每秒只存储 50 个元素)的原因是为了 catch ,以防 GPRS 连接丢失。

在一个随机的时刻,我的数据库格式错误:

sqlite> pragma integrity_check;
Error: database disk image is malformed

我的第二个进程循环显示此消息:

Failed to get table: database disk image is malformed

是否有任何方法可以以编程方式清理数据库以防其格式错误?我的程序是用 C 编写的。

感谢您的帮助

最佳答案

如果有一种机制可以自动修复损坏,SQLite 早就在使用它了。

删除数据库文件(并从备份中恢复最后一个副本,如果有的话)。

关于c - SQLite:如何以编程方式修复格式错误的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960607/

相关文章:

c - 将 .txt 文件中的字符串读入动态数组

c - 地址运算符和变量标记连接宏

c - static_assert 宽字 rune 字的符号?

mysql - 如果文件路径在文件路径表中匹配,则查询重命名文件路径

SQLite,如何在日期时间修饰符中使用表达式

sqlite - 这是SQLite的合理目标负载吗?

c++ - free如何处理空指针

mysql - 想要找到旧数据库

sql - 将三个表连接成一个连接表

MYSQL:使用正则表达式 REGEX 验证输入