Перестала работать база данных room, долго проект не запускал, вернулся к нему и пишет Unable to copy database file

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

Когда запускал в последний раз не работала логика, а сейчас даже база данных не подгружается. Вот класс где она должна подгружаться:

package com.gorchatov.shazamclone;

import android.app.Application;

import androidx.room.Room;

public class App extends Application {
private static App instance;

private MusicDatabase musicDatabase;

@Override
public void onCreate() {
    super.onCreate();
    instance = this;
    musicDatabase = Room.databaseBuilder(this, MusicDatabase.class, "Music")
            .allowMainThreadQueries()
            .createFromAsset("database/myfin.db")
            .build();//сюда надо путь к готовой БД
}

public static App getInstance() {
    return instance;

}

public MusicDatabase getDatabase() {
    return musicDatabase;
}}

вот где приложение вылетает:

dataBaseThread = new Thread(() -> {
        musicDao = App.getInstance().getDatabase().musicDao();
    });
    dataBaseThread.start();
    musicDao.getAll();

Ошибка

023-05-27 20:14:11.876 25223-25272 AndroidRuntime com.gorchatov.shazamclone E FATAL EXCEPTION: AudioRecorder Thread Process: com.gorchatov.shazamclone, PID: 25223 java.lang.RuntimeException: Unable to copy database file. at androidx.room.SQLiteCopyOpenHelper.verifyDatabaseFile(SQLiteCopyOpenHelper.kt:114) at androidx.room.SQLiteCopyOpenHelper.getWritableDatabase(SQLiteCopyOpenHelper.kt:68) at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:638) at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:457) at com.gorchatov.shazamclone.MusicDao_Impl.getAll(MusicDao_Impl.java:131) at com.gorchatov.shazamclone.MainActivity.RecognizeMusic(MainActivity.java:240) at com.gorchatov.shazamclone.MainActivity.writeAudioDataToByte(MainActivity.java:139) at com.gorchatov.shazamclone.MainActivity.lambda$onCreate$0$com-gorchatov-shazamclone-MainActivity(MainActivity.java:88) at com.gorchatov.shazamclone.MainActivity$$ExternalSyntheticLambda0.run(Unknown Source:2) at java.lang.Thread.run(Thread.java:1012) Caused by: java.nio.channels.ClosedByInterruptException at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:203) at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:364) at sun.nio.ch.FileChannelImpl.transferFrom(FileChannelImpl.java:756) at androidx.room.util.FileUtil.copy(FileUtil.kt:41) at androidx.room.SQLiteCopyOpenHelper.copyDatabaseFile(SQLiteCopyOpenHelper.kt:179) at androidx.room.SQLiteCopyOpenHelper.verifyDatabaseFile(SQLiteCopyOpenHelper.kt:111) at androidx.room.SQLiteCopyOpenHelper.getWritableDatabase(SQLiteCopyOpenHelper.kt:68)  at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:638)  at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:457)  at com.gorchatov.shazamclone.MusicDao_Impl.getAll(MusicDao_Impl.java:131)  at com.gorchatov.shazamclone.MainActivity.RecognizeMusic(MainActivity.java:240)  at com.gorchatov.shazamclone.MainActivity.writeAudioDataToByte(MainActivity.java:139)  at com.gorchatov.shazamclone.MainActivity.lambda$onCreate$0$com-gorchatov-shazamclone-MainActivity(MainActivity.java:88)  at com.gorchatov.shazamclone.MainActivity$$ExternalSyntheticLambda0.run(Unknown Source:2)  at java.lang.Thread.run(Thread.java:1012) 

Ответы

▲ 0

Возможно, файл базы данных был поврежден. Попробуйте создать новый файл базы данных и перенести данные из старого файла в новый.