Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Migration Not Found

Olá, estou tentando adicionar uma tabela da seguinte forma:

MIGRATION_1_2.kt

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("CREATE TABLE Fotos (
                    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
                    caracteristica_id INTEGER NOT NULL, caminho_foto TEXT,
                    caminho_thumb TEXT, nome_img TEXT, 
                    PRIMARY KEY(id),  
                    FOREIGN KEY(caracteristica_id) REFERENCES caracteristica(id) 
                    ON UPDATE CASCADE ON DELETE CASCADE)")
    }
}

Já incrementei a versão da database e estou adicionando a Migration assim:

GeradorDatabase.kt

      private fun buildDatabase(context: Context): AppDatabase {
            return Room
                .databaseBuilder(context, AppDatabase::class.java, BuildConfig.DATABASE_NAME)
                .allowMainThreadQueries()
                .addMigrations(MIGRATION_1_2)
                .build)

Porém, o Android reclama que não encontra a migration dizendo que devo usar o addMigrations que ja está ali. Eu esqueci de fazer alguma coisa?

3 respostas

Oi Rodrigo, tudo bem?

Possíveis problemas comuns são:

  • As entidades não foram modificadas para realizar migration;
  • Você já executou a migration de versão 2 e agora precisa ser uma migration de versão 3 ou superior.

Dá uma olhada se mudar a versão para 3 funciona, caso não funcionar, compartilha o projeto comigo via GitHub para eu dar uma olhada.

Caso tenha dúvidas sobre como compartilhar o projeto via GitHub, dê uma olhada neste tutorial da Alura+.

solução!

Olá Alex.

Obrigado pela resposta, consegui resolver o problema. Este estava acontecendo porque eu estava fazendo o addMigrations() na minha classe geradora de banco de dados, porém, eu havia implementado a biblioteca Koin para injetar as dependências e desta forma precisava adicionar o addMigrations()no meu arquivo AppModules . Por isso não era possível encontrar a migration, só não sei se preciso deixar o comando nos dois pontos do código (por enquanto está apenas no appModules)

Até mais.

Entendi, que bom que deu certo :)