我的应用程序的一些实际用户正在经历SQLite数据库损坏。当我们从用户那里收集日志时,我们发现了以下详细信息:E/SQLiteLog(14085):(11)databasecorruptionatline57189of[b3bb660af9]E/SQLiteLog(14085):(11)Invalidpagecount:nPage:52,nPageFile:50E/SQLiteLog(14085):(11)lockBtree()error,rc:11,printingoutfirstpage(size:32768)ofDB/data/data/com.app.testpackagena
我的应用程序的一些实际用户正在经历SQLite数据库损坏。当我们从用户那里收集日志时,我们发现了以下详细信息:E/SQLiteLog(14085):(11)databasecorruptionatline57189of[b3bb660af9]E/SQLiteLog(14085):(11)Invalidpagecount:nPage:52,nPageFile:50E/SQLiteLog(14085):(11)lockBtree()error,rc:11,printingoutfirstpage(size:32768)ofDB/data/data/com.app.testpackagena
精简版如果我的进程在事务中间终止,或者在SQLite提交事务时终止,数据库文件损坏的可能性有多大?长版我的应用程序使用SQLite数据库进行存储(直接,而不是通过CoreData)。我正在开发一个新版本的应用程序,它需要更新数据库架构。启动时,该应用程序将检查数据库,如果需要更新,则执行一系列SQL语句来执行此操作。根据数据库中的数据量,更新可能会长时间运行(以秒为单位),因此我需要考虑在更新完成之前进程可能终止的可能性。(对于上下文,这是在iPhone上,处理器速度很慢,应用程序可能会因来电而终止。)当然,我会将升级SQL语句包装在一个事务中。这是否足以保证数据库不会损坏?我假设交易
精简版如果我的进程在事务中间终止,或者在SQLite提交事务时终止,数据库文件损坏的可能性有多大?长版我的应用程序使用SQLite数据库进行存储(直接,而不是通过CoreData)。我正在开发一个新版本的应用程序,它需要更新数据库架构。启动时,该应用程序将检查数据库,如果需要更新,则执行一系列SQL语句来执行此操作。根据数据库中的数据量,更新可能会长时间运行(以秒为单位),因此我需要考虑在更新完成之前进程可能终止的可能性。(对于上下文,这是在iPhone上,处理器速度很慢,应用程序可能会因来电而终止。)当然,我会将升级SQL语句包装在一个事务中。这是否足以保证数据库不会损坏?我假设交易
我不确定这里发生了什么,但我发现从sqlite3_column_text返回的数据在finalize/closesqlite阶段被更改。//rcnothandledinthisabbreviatedcodesqlite3*db;sqlite3_stmt*stmt;char*sql;constchar*tail;intrc;char*dbName="C:\\db\\myblobs.db";intmyIndex=0;char*myLocation1;stringmyLocation2;rc=sqlite3_open(dbName,&db);sql="SELECTlocationFROMbl
我不确定这里发生了什么,但我发现从sqlite3_column_text返回的数据在finalize/closesqlite阶段被更改。//rcnothandledinthisabbreviatedcodesqlite3*db;sqlite3_stmt*stmt;char*sql;constchar*tail;intrc;char*dbName="C:\\db\\myblobs.db";intmyIndex=0;char*myLocation1;stringmyLocation2;rc=sqlite3_open(dbName,&db);sql="SELECTlocationFROMbl
我得到了一个目录目录,每个目录都包含我必须解析的.sqlite和.sqback文件的集合。问题是当我收到这些文件时,我认为其中一些文件已损坏,因为我收到错误消息:ERR:[SQLITE_CORRUPT]Thedatabasediskimageismalformed(数据库磁盘镜像格式错误)当我尝试处理它们时在我的控制台上。这仅发生在某些文件中。我已经隔离了一些并尝试在这些坏文件的新副本上单独运行我的程序,它们会导致错误。大多数文件都很好:)我意识到我确实有可能一开始就得到损坏的文件,所以我想要一种方法来确定,在尝试解析它们之前,哪些文件是好的,哪些不是。我正在用Java编写。我只对sq
我得到了一个目录目录,每个目录都包含我必须解析的.sqlite和.sqback文件的集合。问题是当我收到这些文件时,我认为其中一些文件已损坏,因为我收到错误消息:ERR:[SQLITE_CORRUPT]Thedatabasediskimageismalformed(数据库磁盘镜像格式错误)当我尝试处理它们时在我的控制台上。这仅发生在某些文件中。我已经隔离了一些并尝试在这些坏文件的新副本上单独运行我的程序,它们会导致错误。大多数文件都很好:)我意识到我确实有可能一开始就得到损坏的文件,所以我想要一种方法来确定,在尝试解析它们之前,哪些文件是好的,哪些不是。我正在用Java编写。我只对sq
此链接准确描述了我的问题:http://old.nabble.com/Android-database-corruption-td28044218.html#a28044218现在大约有300人在使用我的Android应用程序,并且每次我都会收到带有此堆栈跟踪的服务器崩溃报告:android.database.sqlite.SQLiteDatabaseCorruptException:databasediskimageismalformedatandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:259
此链接准确描述了我的问题:http://old.nabble.com/Android-database-corruption-td28044218.html#a28044218现在大约有300人在使用我的Android应用程序,并且每次我都会收到带有此堆栈跟踪的服务器崩溃报告:android.database.sqlite.SQLiteDatabaseCorruptException:databasediskimageismalformedatandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:259