opening db: `name db`: Read-only file system. KMM. Desktop

Рейтинг: 1Ответов: 1Опубликовано: 19.08.2023

Есть у кого-нибудь идеи как можно решить проблему:
 есть мультиплатформенный проект с sqldelight. 
Всё работает хорошо, ios, android. А с desktop проблема. 
Когда мы создаем в десктопе драйвер для базы данных, мы добавляем к мемори название бд чтобы она каждый раз не пересоздавалась:


JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY + nameDb)



И если я запускаю через студию desktop приложение, всё хорошо, всё работает. 


Но если я делаю dmg образ и устанавливаю приложение. Я получаю ошибку:
opening db: name db: Read-only file system. 
Я так понимаю, мак не даёт нашему собранному приложению читать файл базы данных. Как это обойти не пойму, есть идеи у кого?

Ответы

▲ 0Принят

Может кому будет полезно. После долгих поисков, нашёл такое решение:

actual fun createDriver(): SqlDriver {
        val databasePath = File(System.getProperty("java.io.tmpdir"), "gtp.db")
        val driver: SqlDriver = JdbcSqliteDriver(url = "jdbc:sqlite:${databasePath.absolutePath}")
        return driver.apply {
            try {
                AppDatabase.Schema.create(this)
            }catch (e: Exception){

            }
        }

    }