Миграция комнаты не справилась должным образом - PullRequest
0 голосов
/ 21 ноября 2018

Получение следующего исключения:

Ожидается:

TableInfo {name = 'chat_table', columns = {message = Column {name = 'message', type = 'TEXT', affinity =' 2 ', notNull = false, primaryKeyPosition = 0}, messageStatus = столбец {name =' messageStatus ', тип =' TEXT ', affinity =' 2 ', notNull = false, primaryKeyPosition = 0}, id =Столбец {name = 'id', type = 'INTEGER', affinity = '3', notNull = true, primaryKeyPosition = 1}}, foreignKeys = [], indices = []}

Найдено:

TableInfo {name = 'chat_table', columns = {messageStatus = Column {name = 'messageStatus', type = 'TEXT', affinity = '2', notNull = false, primaryKeyPosition = 0}, id = столбец {name = 'id', type = 'INTEGER', affinity = '3', notNull = false, primaryKeyPosition = 1}, message = столбец {name = 'message', type = 'TEXT', сходство= '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 Ответ

0 голосов
/ 21 ноября 2018

Попробуйте следующим образом ..

@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/androiddevelopers/understanding-migrations-with-room-f01e04b07929

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...