gpt4 book ai didi

android - java.lang.IllegalStateException : Migration didn't properly handle table 错误

转载 作者:行者123 更新时间:2023-11-29 01:06:24 27 4
gpt4 key购买 nike

如何将空字段类型迁移到 Room 中的文本?

现在我正面临这个问题:

java.lang.IllegalStateException: Migration didn't properly handle data_table

Expected: TableInfo{name='data_table', columns=url=Column{name='url', type='TEXT', notNull=false,primaryKeyPosition=0}.....

Found: TableInfo{name='data_table', columns= url=Column{name='url',type='', notNull=false, primaryKeyPosition=0}.....

我试过使用 UNDEFINED typeAffinity,但没有效果。

最佳答案

问题是创建表时,创建者没有明确指出列。有两种方法可以选择解决问题。

  1. 您可以在迁移过程中创建一个新数据库,并将所有旧数据复制到新数据中。像这样。

    static final Migration MIGRATION_1_2 = new Migration(1, 2) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
    // Create the new table
    database.execSQL(
    "CREATE TABLE data_table_new (url TEXT");
    // Copy the data
    database.execSQL(
    "INSERT INTO data_table_new url SELECT url FROM data_table");
    // Remove the old table
    database.execSQL("DROP TABLE data_table");
    // Change the table name to the correct one
    database.execSQL("ALTER TABLE data_table_new RENAME TO data_table");
    }
    };

但是在处理大型数据库时效率很低。所以我采用第二种方式。

2 您使用您最喜欢的数据库管理器或终端将表迁移到具有显式列类型的新表。然后将新数据库放入您的项目中。

关于android - java.lang.IllegalStateException : Migration didn't properly handle table 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46769772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com