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? The same thing happens when I execute the failing query with the sqlite3 C Library, using years-old tested code. Thank you! Jerry Krinock _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users