SQLiteBlobTooBigException для запроса с небольшими данными - PullRequest
0 голосов
/ 29 января 2020

У меня странная проблема при выполнении запроса в базе данных SQLite, которую я создал для городов и их местоположений:

2020-01-29 16: 45: 17.506 13110-13169 / xxx.debug E / CursorWindow: не удалось прочитать строку 0, столбец 0 из CursorWindow, которое имеет 1 строку, 0 столбцов. 2020-01-29 16: 45: 17.507 13110-13169 / xxx.debug E / SQLiteQuery: исключение: слишком большая строка, чтобы поместиться в CursorWindow requiredPos = 0, totalRows = 10; запрос: ВЫБРАТЬ * ИЗ ГОРОДОВ, ГДЕ CITY_NAME НРАВИТСЯ "stu%" LIMIT 10 2020-01-29 16: 45: 17.508 13110-13169 / xxx.debug W / Filter: во время выполнения executeFiltering () произошло исключение! android .database.sqlite.SQLiteBlobTooBigException: слишком большая строка, чтобы поместиться в CursorWindow requiredPos = 0, totalRows = 10 в android .database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow (собственный метод) в android .database.sqneiteSQL. .executeForCursorWindow (SQLiteConnection. java: 942) в android .database.sqlite.SQLiteSession.executeForCursorWindow (SQLiteSession. java: 838) в android .database.sqlite.SQLiteQuery.fillWindow (SQLiteQuery *. : 62) в android .database.sqlite.SQLiteCursor.fillWindow (SQLiteCursor. java: 153) в android .database.sqlite.SQLiteCursor.getCount (SQLiteCursor. java: 140) в androidx.cursoradapter. widget.CursorFilter.performFiltering (CursorFilter. java: 54) в android .widget.Filter $ RequestHandler.handleMessage (Filter. java: 236) в android .os.Handler.dispatchMessage (Handler. * 1030). *: 107) в android .os.Looper.l oop (Looper. java: 214) в android .os.HandlerThread.run (HandlerThread. java: 67)

Странно то, что результат очень маленький и не должно зависеть от размера окна, связанного в других ответах, где в базе данных хранится настоящий блоб. Посмотрите результат запроса, сделанного с помощью SQLite Manager Addon, в Firefox: Example of successful query

И вот как я создаю курсор:

return readableDatabase.rawQuery(
        "SELECT * FROM CITIES WHERE CITY_NAME LIKE \"$search%\" LIMIT 10",
        emptyArray()
    )
...