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

Reply via email to