I see the above error when I try to add to sqllite DB on android.I am using cloudant library. Here's the stack trace:
2019-07-17 18:04:48.292 5522-5753/org.iprd.identity E/SQLiteQuery: exception: Row too big to fit into CursorWindow requiredPos=0, totalRows=1; query: SELECT docs.docid, docs.doc_id, revid, sequence, current, deleted, parent, json FROM revs, docs WHERE docs.docid=? AND revs.doc_id=docs.doc_id AND revid=? ORDER BY revs.sequence LIMIT 1
2019-07-17 18:04:48.302 5522-5522/org.iprd.identity E/DatabaseImpl: Failed to create document
java.util.concurrent.ExecutionException: android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
at java.util.concurrent.FutureTask.report(FutureTask.java:123)
at java.util.concurrent.FutureTask.get(FutureTask.java:193)
at com.cloudant.sync.internal.documentstore.DatabaseImpl.get(DatabaseImpl.java:1084)
at com.cloudant.sync.internal.documentstore.DatabaseImpl.create(DatabaseImpl.java:925)
I never got this issue previously, however, I recently made a change and started using a 3rd party tool to give me some images. With this new tool, the image sizes seem to be much bigger than before. I am storing these images in my db as a string by doing a Base64 encoding of the image. However, with this new tool, while storing the image, I get the above exception.
I have a unit test which I tried using one of the generated strings from this image, but that also throws an error that the string size is too large and does not even compile.
What is the best approach to solve this? -
What I was thinking of doing is to store the image in the device itself and just store the path in the DB.
Is there some compression we can do to the image to reduce its file size?
Is it possible to tune some db setting to ensure that it can handle larger image sizes?
Thanks in advance!