当前位置: 首页 > 知识库问答 >
问题:

房间迁移未妥善处理

范华清
2023-03-14

获取以下异常

预期:

TableInfo{name='chat_table',Columns={message=column{name='message',type='text',affinity='2',notnull=false,primarykeyposition=0},messageStatus=column{name='message status',type='text',affinity='2',notnull=false,primarykeyposition=0},id=column{name='id',type='integer',affinity='3',notnull=true,primarykeyposition=1}},ForeignKeys=[],indices=[]}

找到:

TableInfo{name='chat_table',Columns={messageStatus=Column{name='message status',type='text',affinity='2',notnull=false,PrimaryKeyPosition=0},id=Column{name='id',type='integer',affinity='3',notnull=false,PrimaryKeyPosition=1},message=Column{name='message',type='text',affinity='2',notnull=false,PrimaryKeyPosition=0},ForeignKeys=[],Indices=[]}

谁能说说这里的问题是什么吗?我只是将表列值复制到另一个表。然后删除第一个表,然后将新表重命名为旧名称。

 1. database.execSQL("CREATE TABLE chat_table_new (id INTEGER,
        messageStatus TEXT, message TEXT, PRIMARY KEY(id))")
 2. database.execSQL("INSERT INTO chat_table_new SELECT * FROM
        chat_table") 
 3. database.execSQL("DROP TABLE chat_table") 
 4. database.execSQL("ALTER TABLE chat_table_new RENAME TO chat_table")

共有1个答案

丁承德
2023-03-14

试试看..

@Database(entities = {Student.class, BookIssue.class},version = 1)
public abstract class StudentDatabase extends RoomDatabase {
private static StudentDatabase studentDatabase;
public static StudentDatabase getStudentDatabase(Context context)
{
    if (studentDatabase==null)
    {
        studentDatabase= Room.databaseBuilder(context.getApplicationContext(),StudentDatabase.class,"student-database").addMigrations(StudentDatabase.MIGRATION_1_2).build();

    }

    return studentDatabase;
}

public abstract StudentDao studentDao();
public abstract BookDao bookDao();

public static final Migration MIGRATION_1_2 =new Migration(1,2) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL("alter table Student "+"add column pf String");
    }
};
}

更多了解请参阅此链接https://medium.com/androiddeveloperers/derministration-migrations-with-room-F01E04B07929

 类似资料:
  • 并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。

  • 我在存钱 进入我的房间数据库版本1。 现在我需要将

  • java.lang.IllegalStateException:迁移未正确处理data_table 应为:TableInfo{name=“data_table”,columns=url=column{name=“url”,type=“text”,notnull=false,primarykeyposition=0}..... 找到:TableInfo{name='data_table',colum

  • 找到:TableInfo{name='news',Columns={alias=Column{name='alias',Type='text',affinity='2',notnull=false,PrimaryKeyPosition=0,DefaultValue='null'},Selected=Column{name='select',Type='integer',affinity='3',n

  • 最近,我决定将我的应用程序从Java重写为静态编程语言。问题是在房间中迁移会返回一个奇怪的异常。 这是我的数据类的一部分 注意:我自己没有更改列,因此我的迁移如下所示: 有人能告诉我为什么我看到而不是吗? 提前感谢!