为啥我不断获取数据库磁盘映像在 android studio 上格式错误

Posted

技术标签:

【中文标题】为啥我不断获取数据库磁盘映像在 android studio 上格式错误【英文标题】:Why do I keep getting database disk image is malformed on android studio为什么我不断获取数据库磁盘映像在 android studio 上格式错误 【发布时间】:2021-11-01 01:43:40 【问题描述】:

当我尝试从添加到我在 android studio 上的 SQL 数据库中的第二个表中获取详细信息时,我不断获取数据库磁盘映像格式错误。 这是表格的代码sn-p

public static final class CourseInfoEntry implements BaseColumns 
        public static final String TABLE_NAME = "course_info";
        public static final String COLUMN_COURSE_ID = "course_id";
        public static final String COLUMN_COURSE_TITLE = "course_title";

        public static final String SQL_CREATE_TABLE =
                "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY, " + COLUMN_COURSE_ID + " TEXT NOT NULL UNIQUE, " + COLUMN_COURSE_TITLE + " TEXT NOT NULL)";
    
    
    
public static final class NoteInfoEntry implements BaseColumns 
        //Constant for the table name
        public static final String TABLE_NAME = "note_info";
        //Constant for the table columns
        public static final String COLUMN_COURSE_ID = "course_id";
        public static final String COLUMN_NOTE_TITLE = "note_title";
        public static final String COLUMN_NOTE_TEXT = "note_text";

        //Constant to create the note info table
        public static final String SQL_CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY, " +
                        COLUMN_NOTE_TITLE + " TEXT NOT NULL, " +
                        COLUMN_NOTE_TEXT + " TEXT, " +
                        COLUMN_COURSE_ID + " TEXT NOT NULL)";

    

这是从 SQLiteOpenHelper 类创建表的代码

    public static final String DATABASE_NAME = "NoteKeeper.db";
    public static final int DATABASE_VERSION = 1;
    public NoteKeeperOpenHelper(@Nullable Context context) 
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    

    
    @Override
    public void onCreate(SQLiteDatabase db) 

        db.execSQL(NoteKeeperDatabaseContract.CourseInfoEntry.SQL_CREATE_TABLE);
        db.execSQL(NoteKeeperDatabaseContract.NoteInfoEntry.SQL_CREATE_TABLE);

        //Adding data to the tables
        DatabaseDataWorker worker = new DatabaseDataWorker(db);
        worker.insertCourses();
        worker.insertSampleNotes();



    

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 

    

当我在终端中使用 select * from course_id 检查第一个表的数据时,我得到了这个

sqlite> select * from course_info;
1|android_intents|Android Programming with Intents
2|android_async|Android Async Programming and Services
3|java_lang|Java Fundamentals: The Java Language
4|java_core|Java Fundamentals: The Core Platform

但是当我检查第二张表的数据时,我得到了这个

sqlite> select * from note_info;
Error: database disk image is malformed

【问题讨论】:

【参考方案1】:

事实证明,只有当我在 Android Studio 的终端中使用命令行查询 SQLite 数据库时才会发生错误。

当我在 android studio 中使用数据库检查器时,数据查询很好,它返回第二个表中的数据,没有错误。

注意:Database Inspector 只能用于在支持 Android API 26 及更高版本的模拟器中运行的应用。

【讨论】:

以上是关于为啥我不断获取数据库磁盘映像在 android studio 上格式错误的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6:iOS 8.1 开发者磁盘映像无法挂载

在Mac OS X上创建加密的稀疏磁盘映像

为啥 Keycloak 会不断重新部署相同的 .jar 文件?

NSInternalInconsistencyException:数据库磁盘映像格式错误

SQLite“数据库磁盘映像格式错误”

为啥我的失败吐司在android kotlin中不断出现