Corruption reported by sqlite on database while trying to import to room database android kotlin

Viewed 274

I am trying to import data from a database file, but I am facing an errorE/SupportSQLite: Corruption reported by sqlite on database: /data/user/0/com.example.foodie/databases/foodie_database.db.

These are some error logs:

/SQLiteDatabase: Database corruption detected in open() android.database.sqlite.SQLiteDatabaseCorruptException: file is not a database (code 26 SQLITE_NOTADB[26]): , while compiling: PRAGMA journal_mode E/SQLiteLog: (11) Invalid MagicHeader! (11) Corrupt in lockBtree: rc 26, nPageHeader 1919251316, nPageFile 1 (11) printing out first page (size: 4096) of DB /data/user/0/com.example.foodie/databases/foodie_database.db

AppDatabase.kt

@Database(
        entities = [MenuItem::class,
            Order::class,
            OrderItem::class,
            Restaurant::class,
            RestaurantRating::class,
            User::class,
            UserFavorite::class,
            UserSearch::class],
        version = 15,
        exportSchema = false)


abstract class AppDatabase: RoomDatabase() {

    abstract val orderDao: OrderDao
    abstract val restaurantDao: RestaurantDao
    abstract val userDao: UserDao

    companion object{

        @Volatile
        private var INSTANCE: AppDatabase? = null

        fun getInstance(context: Context): AppDatabase {
            synchronized(this) {
                var instance = INSTANCE

                if (instance == null) {
                    instance = Room.databaseBuilder(
                            context.applicationContext,
                            AppDatabase::class.java,
                            "foodie_database.db"
                    )
                        .fallbackToDestructiveMigration()
                        .createFromAsset("databases/loadData.db")
                            .build()
                    INSTANCE = instance
                }
                return instance
            }
        }
    }

}

loadData.db

BEGIN TRANSACTION;
    CREATE TABLE IF NOT EXISTS "restaurant_table" (
        "restaurantId"  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        "restaurant_name"   TEXT NOT NULL,
        "phone_number"  TEXT NOT NULL,
        "Category" TEXT NOT NULL,
        "location" TEXT NOT NULL,
    );
    
    insert into "restaurant_table" values (1, 'Burger King', '123456789', 'Fast Food', 'location');
    insert into "restaurant_table" values (3, 'Pizza', '9876543210', 'Fast Food', 'location');
COMMIT;

Restaurant Entity in Room

@Entity(tableName = "restaurant_table")
data class Restaurant(
    @PrimaryKey(autoGenerate = true)
    val restaurantId: Long = 0L,

    @ColumnInfo(name = "restaurant_name")
    val restaurantName: String,

    @ColumnInfo(name = "phone_number")
    val phoneNumber: String,

    @ColumnInfo(name = "Category")
    val category: String,

    @ColumnInfo(name = "location")
    val location: String,
)
0 Answers
Related