我正在尝试使用Ktor构建一个应用程序,并用SQLite公开。不幸的是,我的应用程序总是崩溃。
这是我的数据库连接:
class DatabaseFactory(connection: DatabaseConnection) {
init {
connect()
createSchema()
}
private fun connect() {
Database.connect("jdbc:sqlite:/path/to/file", "org.sqlite.JDBC")
TransactionManager.manager.defaultIsolationLevel = Connection.TRANSACTION_SERIALIZABLE
}
private fun createSchema() {
transaction {
SchemaUtils.create(Images)
SchemaUtils.create(KeyValues)
Images.deleteAll()
}
}
suspend fun <T> dbQuery(block: () -> T): T =
withContext(Dispatchers.IO) {
transaction { block() }
}
}
// access db with
DatabaseFactory.dbQuery {
// do stuff
}在运行我的应用程序时,我得到以下错误:
org.jetbrains.exposed.exceptions.ExposedSQLException: org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked (database is locked)发布于 2020-02-26 15:28:41
当您使用协程并在Dispatchers.IO中运行代码时,您的查询可以在单独的线程中执行,这些线程被视为只能从SQLite实例读取的multiple processes。
https://stackoverflow.com/questions/60405615
复制相似问题