On Mon, 23 Jun 2014 20:16:44 -0700 Jerry Krinock <je...@ieee.org> wrote:
> How can it be that adding a WHERE clause to a successful query causes > ‘database disk image is malformed’? > > My database has one table named `itemTable`. This table has two > columns, `key` which is type text and `value` which is type blob. > There are two rows of data. Their `value` blobs are actually strings > encoded as UTF16 little endian. > > The issue is demonstrated in the following transcript, using the > sqlite command line tool in Mac OS X. > > Air2: jk$ sqlite3 Test.sql > SQLite version 3.7.13 2012-07-17 17:46:21 > Enter ".help" for instructions > Enter SQL statements terminated with a ";" > sqlite> SELECT key from itemTable ; > profileName > extoreName > sqlite> SELECT key FROM `itemTable` WHERE `key` = 'profileName' ; > Error: database disk image is malformed > sqlite> SELECT * FROM `itemTable` WHERE `key` = 'nonexistent' ; > Error: database disk image is malformed > > // Same succeed,fail result if I change query to "SELECT *" instead > of "SELECT key". > > sqlite> SELECT * FROM `itemTable` ; > profileName|Fooobar > extoreName|Baaaaaahhhhh > sqlite> SELECT * FROM `itemTable` WHERE `key` = 'profileName' ; > Error: database disk image is malformed > > One thing I find rather surprising is that sqlite seems to know that > the 14-byte and 24-byte blobs are UTF16-LE encoded strings, and > prints them as “Fooobar” and “Baaaaaahhhhh”. > > Is my database OK or malformed? Did you create the db schema with newer version of sqlite3? Perhaps you did that and create a partial index, not supported on older sqlite3 versions. Please, check index schemas for a where clause in them. > > The same thing happens when I execute the failing query with the > sqlite3 C Library, using years-old tested code. > > Thank you! > > Jerry Krinock --- --- Eduardo Morras <emorr...@yahoo.es> _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users