Код: Выделить всё
Fatal Exception: android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 1802 SQLITE_IOERR_FSTAT[1802]): , while compiling: PRAGMA cache_size
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1540)
at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:1075)
at android.database.sqlite.SQLiteConnection.setCacheSizeFromConfiguration(SQLiteConnection.java:536)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:416)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:228)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:758)
at android.database.sqlite.SQLiteConnectionPool.tryAcquireNonPrimaryConnectionLocked(SQLiteConnectionPool.java:1355)
at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:983)
at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:619)
at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:916)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:2278)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:2253)
at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.query(FrameworkSQLiteDatabase.kt:156)
at androidx.room.RoomDatabase.query(RoomDatabase.kt:490)
at androidx.room.util.DBUtil.query(DBUtil.kt:75)
at myapppackage.data.datasource.db.language.MultiLanguageStationNameDao_Impl$1.call(MultiLanguageStationNameDao_Impl.java:37)
at myapppackage.data.datasource.db.language.MultiLanguageStationNameDao_Impl$1.call(MultiLanguageStationNameDao_Impl.java:34)
at androidx.room.CoroutinesRoom$Companion$createFlow$1$1$1.invokeSuspend(CoroutinesRoom.kt:128)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Это код построителя базы данных Room.
Код: Выделить всё
private fun buildDatabase(context: Context): AppDatabase {
return Room.databaseBuilder(
context,
AppDatabase::class.java, "new_database.db"
).createFromAsset("db/my_app_db.sqlite")
.fallbackToDestructiveMigration()
.build()
}
Однако вновь добавленные данные не были запрошены в приложении, поэтому я проверил и обнаружил, что мне нужно увеличить версию, поэтому добавил к версии 1, как показано ниже. (ранее 1)
Код: Выделить всё
@Database(
entities = [
MultiLanguageStationNameEntity::class,
],
version = 2
)
Код: Выделить всё
override fun getStationNames(): Flow {
return multiLanguageStationNameDao.getStationNames()
.map { entities ->
entities.map {
entity -> entity.asDomainModel()
}
}
}
Код: Выделить всё
@Dao
interface MultiLanguageStationNameDao {
@Query("SELECT * FROM MultiLanguageStationName")
fun getStationNames(): Flow
}
Это потому, что приложение обновляется, пока база данных открыта?
Я это понимаю FallbackToDestructiveMigration() удалит и заново создаст базу данных.
Может ли это повлиять?
Подробнее здесь: https://stackoverflow.com/questions/782 ... update-app