On 12/11/2015 08:22 PM, ajm at zator.com wrote: >> ---- Mensaje original ---- >> De: Dan Kennedy <danielk1977 at gmail.com> >> Para: sqlite-users at mailinglists.sqlite.org >> Fecha: Fri, 11 Dec 2015 15:28:33 +0700 >> Asunto: Re: [sqlite] Problem when upgrading from FTS3/4 to >> FTS5modules(revisited) >> >>> 1a.- Delete the previous table. >>> DROP TABLE IF EXIST ftsm >>> >>> This scheme work ok with the FST3/4 modules, but compiling with FTS5 gives >>> an erroro in 1a: "database disk image is malformed". >>> >>> Note that in previous attemps I believed that the problem was into try to >>> delete a ftsm table build with the previous modules, but the error happen >>> when trying delete a table build with the FTS5 module. >>> >>> ... >>>>> Some clues? >>>> Not really sure why it might fail there. Can you post the entire >>>> database schema (results of "SELECT * FROM sqlite_master" or the output >>>> of the .schema shell tool command)? >>>> >>> Dan: >>> >>> Here is the schema: >> That all looks Ok. >> >> If you use the shell tool to execute the "DROP TABLE IF EXISTS ftsm" >> command does it report an error as well? >> > Dan: > > Surprisingly, the shell does not complain when using the same query, and > indeed, drop the table. > > Yeah, I also believe that the problem is in my roof, although that code has > been behaving Ok from ages with the FTS3/4 modules (only changes some > directives in other places of the code). > > Any way, when running again the code when the table has been previously > erased (with the shell), the routine works without complaint (executes the > query correctly), and despite the warning, the rest of the app behaves > correctly and the queries related with the search works fine. > > When the table exist, the debugger shows that sqlite3_prepare_v2() ends Ok, > but sqlite3_step() ends with error 11.
Are you able to compile a debugging build of SQLite and set a breakpoint in sqlite3CorruptError()? Assuming the breakpoint is triggered within the DROP TABLE IF EXISTS statement (pretty good chance), the stack trace will tell us more about the form of corruption SQLite thinks it has found. Thanks, Dan. > > When the table is already deleted, sqlite3_prepare_v2() ends Ok, and > sqlite3_step() ends with 101. > > Frankly, because the routine is the same in both times, and there are not > variables to bind, really I don't know where to look. Anyway thanks for > your's attention. > > Cheers! > > -- > Adolfo J. Millan > > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users