Ola bom dia,
Estou com um erro na projeto:
Caused by: android.database.sqlite.SQLiteException: no such column: telefoneTipo (code 1 SQLITE_ERROR): , while compiling: INSERT INTO Telefone (numero, alunoId) SELECT telefoneTipo, id FROM Aluno
O erro fala que esta na coluna telefoneFixo.
Aqui minha class AgentaMigration:
class AgentaMigrations {
private static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database){
database.execSQL("ALTER TABLE Aluno ADD COLUMN sobrenome TEXT");
}
};
private static final Migration MIGRATION_2_3 = new Migration(2, 3){
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) { // Criar nova tabela com as informacoes desejadas
database.execSQL("CREATE TABLE IF NOT EXISTS `Aluno_novo` " +
" (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + " `nome` TEXT, " + " `telefone` TEXT, " + " `email` TEXT)");
// Copiar dados da tabela antiga para a nova
database.execSQL("INSERT INTO Aluno_novo (id, nome, telefone, email) " + "SELECT id, nome, telefone, email FROM Aluno");
database.execSQL("DROP TABLE Aluno"); // Remove tabela antiga
database.execSQL("ALTER TABLE Aluno_novo RENAME TO Aluno"); // Renomear a tabela nova com o nome da tabela antiga
}
};
private static final Migration MIGRATION_3_4 = new Migration(3, 4){
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE Aluno ADD COLUMN momentoCadastro INTEGER");
}
};
private static final Migration MIGRATION_4_5 = new Migration(4, 5){
@Override
public void migrate(@NonNull SupportSQLiteDatabase database){
database.execSQL("CREATE TABLE IF NOT EXISTS `Aluno_novo` " +
"(`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `nome` TEXT, `telefone_fixo` TEXT, `email` TEXT, `momentoCadastro` INTEGER," +
" `telefoneCelular` TEXT)");
// Copiar dados da tabela antiga para a nova
database.execSQL("INSERT INTO Aluno_novo (id, nome, telefone_fixo, email, momentoCadastro) " + "SELECT id, nome, telefone, email, momentoCadastro FROM Aluno");
database.execSQL("DROP TABLE Aluno"); // Remove tabela antiga
database.execSQL("ALTER TABLE Aluno_novo RENAME TO Aluno"); // Renomear a tabela nova com o nome da tabela antiga
}
};
private static final Migration MIGRATION_5_6 = new Migration(5, 6){
@Override
public void migrate(@NonNull SupportSQLiteDatabase database){
database.execSQL("CREATE TABLE IF NOT EXISTS `Aluno_novo` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `nome` TEXT, `email` TEXT, `momentoCadastro` INTEGER)");
// Copiar dados da tabela antiga para a nova
database.execSQL("INSERT INTO Aluno_novo (id, nome, email, momentoCadastro) " + "SELECT id, nome, email, momentoCadastro FROM Aluno");
database.execSQL("CREATE TABLE IF NOT EXISTS `Telefone` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `numero` TEXT, `tipo` TEXT, `alunoId` INTEGER NOT NULL)");
database.execSQL("INSERT INTO Telefone (numero, alunoId) " + "SELECT telefoneFixo, id FROM Aluno");
database.execSQL("UPDATE Telefone SET tipo = ?", new TipoTelefone[] {FIXO});
database.execSQL("DROP TABLE Aluno"); // Remove tabela antiga
database.execSQL("ALTER TABLE Aluno_novo RENAME TO Aluno"); // Renomear a tabela nova com o nome da tabela antiga
}
};
public static final Migration[] TODAS_MIGRATIONS = {MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5, MIGRATION_5_6};
}