Нет такой таблицы при попытке удаления до ввода данных
Я получаю SQLiteException - no such table
при попытке удаления из таблицы до фактического ввода данных. Я использую комнату.
Я предполагаю, что таблица создается только после вставки первых данных. Однако у меня есть операция, которая требует замены данных в базе данных с каждым запросом:
override fun refreshList(filter: ApplyFilterRequest, page: Int, pageSize: Int, replace: Boolean): Single<FilterResponse> {
var pagedResponseData: ResponseData = ResponseData.list(page, pageSize)
var pagedFilter = filter.copy(responseData = pagedResponseData)
return from(placesApi.applyFilter(pagedFilter))
.doOnSuccess {
var list = it.list?.places
appDatabase.beginTransaction()
list?.let {
var listResult = list.map { ListResult(it.placeId) }
if(replace) {
listResultDao.replace(listResult)//We save each place on the database to be able to reference it by experienceId
}
else{
listResultDao.saveResults(listResult)
}
placesDao.savePlaces(it)
}
appDatabase.setTransactionSuccessful();
appDatabase.endTransaction()
}
.doOnError {
appDatabase.endTransaction()
}
}
И операция замены:
@Transaction
open fun replace(ids: List<ListResult>) {
deleteAll()
saveResults(ids)
}
@Query("DELETE from list_results")
abstract fun deleteAll()
Это выдает следующую ошибку:
Handling Error android.database.sqlite.SQLiteException: no such table: room_table_modification_log (code 1): , while compiling: DELETE from list_results
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such table: room_table_modification_log (code 1): , while compiling: DELETE from list_results)
################################################################# with text We couldn't get your places. Please try again.
android.database.sqlite.SQLiteException: no such table: room_table_modification_log (code 1): , while compiling: DELETE from list_results
#################################################################
Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such table: room_table_modification_log (code 1): , while compiling: DELETE from list_results)
Если данные уже на месте, то я не получаю ошибки.
1 ответ
Решение этой проблемы состоит в том, чтобы просто обновить версию вашей комнаты до более высокой версии, чем 1.1.0, потому что в этой версии есть известная ошибка, которую вы можете использовать 1.1.1 или выше. Вот ошибка https://issuetracker.google.com/issues/79362399