In case anyone else creates this trouble for themselves, my solution was to log out the rows in the DATA table which had a blob in data15 and which did not have the mime type for photos.
That revealed a whole bunch of nonsense rows, with mime types that obviously required strings. Once they were deleted the sync problem went away. R. On Oct 5, 6:57 pm, jarkman <jark...@gmail.com> wrote: > After a fight with some code intended to set contact photos in the > contacts DB on 2.2, the contacts are now unable to sync - I get: > > android.database.sqlite.SQLiteException: unknown error: Unable to > convert BLOB to string > > every time the contact provider attempts a sync, and a popup telling > me that com.google.process.gapps has died. > > I think this means that there is duff data in ContactsContract.DATA > somewhere. Is there any way to work out which mimetypes correspond to > which columns and types in the DATA table, so i can sanitise it ? > > Thanks, > > Richard > > Here's the stack from the crash: > > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): Writing exception to > parcel > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): > android.database.sqlite.SQLiteException: unknown error: Unable to > convert BLOB to string > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.database.CursorWindow.getString_native(Native Method) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.database.CursorWindow.getString(CursorWindow.java:329) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java: > 49) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2$DataRowHandler.getAugmentedValues(ContactsProvider2.java: > 1111) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2$StructuredNameRowHandler.update(ContactsProvider2.java: > 1171) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2.updateData(ContactsProvider2.java: > 3839) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2.updateData(ContactsProvider2.java: > 3823) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2.updateInTransaction(ContactsProvider2.java: > 3509) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.SQLiteContentProvider.update(SQLiteContentProvider.java: > 155) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2.update(ContactsProvider2.java: > 2259) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.content.ContentProviderOperation.apply(ContentProviderOperation.java: > 225) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.SQLiteContentProvider.applyBatch(SQLiteContentProvider.java: > 216) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > com.android.providers.contacts.ContactsProvider2.applyBatch(ContactsProvider2.java: > 2272) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.content.ContentProvider > $Transport.applyBatch(ContentProvider.java:193) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.content.ContentProviderNative.onTransact(ContentProviderNative.java: > 173) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > android.os.Binder.execTransact(Binder.java:288) > 10-05 18:32:31.606: ERROR/DatabaseUtils(216): at > dalvik.system.NativeStart.run(Native Method) > 10-05 18:32:31.626: WARN/dalvikvm(199): threadid=20: thread exiting > with uncaught exception (group=0x4001d7f0) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): FATAL EXCEPTION: > SyncAdapterThread-1 > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): > android.database.sqlite.SQLiteException: unknown error: Unable to > convert BLOB to string > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java: > 158) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java: > 137) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java: > 449) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > android.content.ContentProviderClient.applyBatch(ContentProviderClient.java: > 95) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > com.google.android.syncadapters.contacts.ContactsSyncAdapter.sendEntityToServer(ContactsSyncAdapter.java: > 621) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > com.google.android.syncadapters.contacts.ContactsSyncAdapter.processLocalChanges(ContactsSyncAdapter.java: > 553) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > com.google.android.syncadapters.contacts.ContactsSyncAdapter.innerPerformSync(ContactsSyncAdapter.java: > 248) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > com.google.android.syncadapters.contacts.ContactsSyncAdapter.onPerformLoggedSync(ContactsSyncAdapter.java: > 130) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java: > 27) > 10-05 18:32:31.756: ERROR/AndroidRuntime(199): at > android.content.AbstractThreadedSyncAdapter > $SyncThread.run(AbstractThreadedSyncAdapter.java:163) > 10-05 18:32:36.606: DEBUG/dalvikvm(199): GC_EXPLICIT freed 2304 > objects / 184176 bytes in 76ms > 10-05 18:32:41.666: INFO/Process(199): Sending signal. PID: 199 SIG: 9 > 10-05 18:32:41.686: WARN/InputManagerService(90): Window already > focused, ignoring focus gain of: > android.view.inputmethod.inputmethodmanage...@44c89f68 > 10-05 18:32:41.716: INFO/ActivityManager(90): Process > com.google.process.gapps (pid 199) has died. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en