Reputation: 1876
What is my room migration problem? anyone can see this?
java.lang.IllegalStateException: Migration didn't properly handle: news(com.ngerancang.cacheapipaging.model.News).
Expected: TableInfo{name='news', columns={alias=Column{name='alias', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, selected=Column{name='selected', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, link=Column{name='link', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, guid=Column{name='guid', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, site=Column{name='site', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, date=Column{name='date', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, topic_url=Column{name='topic_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, section_url=Column{name='section_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, num_photo=Column{name='num_photo', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, section_guid=Column{name='section_guid', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, photo=Column{name='photo', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, content_type=Column{name='content_type', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, dateAgo=Column{name='dateAgo', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, thumb=Column{name='thumb', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, title=Column{name='title', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, data_source=Column{name='data_source', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, topic_guid=Column{name='topic_guid', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, pubDate=Column{name='pubDate', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, youtube=Column{name='youtube', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, topic=Column{name='topic', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, section_title=Column{name='section_title', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
Found: TableInfo{name='news', columns={alias=Column{name='alias', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, selected=Column{name='selected', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, link=Column{name='link', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, guid=Column{name='guid', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, site=Column{name='site', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, date=Column{name='date', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, topic_url=Column{name='topic_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, section_url=Column{name='section_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, num_photo=Column{name='num_photo', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, section_guid=Column{name='section_guid', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, default 09-12 19:06:48.734 6165-6190/com.ngerancang.cacheapipaging E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf 09-12 19:06:48.735 6165-6190/com.ngerancang.cacheapipaging E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
My model class looks like this
@Entity(tableName = "news")
data class News(
@PrimaryKey(autoGenerate = true)
var id : Int = 0,
val alias: String?=null,
@ColumnInfo(name = "content_type")
@SerializedName("content_type")
val contentType: String?=null,
@ColumnInfo(name = "data_source")
@SerializedName("data_source")
val dataSource: String?=null,
val date: Long?=null,
val dateAgo: String?=null,
val guid: String?=null,
val link: String?=null,
val photo: String?=null,
val pubDate: String?=null,
@ColumnInfo(name = "section_guid")
@SerializedName("section_guid")
val sectionGuid: String?=null,
@ColumnInfo(name = "section_title")
@SerializedName("section_title")
val sectionTitle: String?=null,
@ColumnInfo(name = "section_url")
@SerializedName("section_url")
val sectionUrl: String?=null,
val site: String?=null,
val thumb: String?=null,
val title: String?=null,
val topic: String?=null,
@ColumnInfo(name = "topic_guid")
@SerializedName("topic_guid")
val topicGuid: String?=null,
@ColumnInfo(name = "topic_url")
@SerializedName("topic_url")
val topicUrl: String?=null,
val youtube: String?=null,
@ColumnInfo(name = "num_photo")
@SerializedName("num_photo")
val numPhoto: String?=null,
var selected: Boolean = false
)
My database abstract class
@Database(entities = [Recipe::class, News::class], version = 2, exportSchema = true)
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase(){
abstract fun recipeDao() : RecipeDao
abstract fun newsDao() : NewsDao
companion object{
private val MIGRATION_1_2 : Migration = object : Migration(1, 2){
override fun migrate(database: SupportSQLiteDatabase) {
val sql = "CREATE TABLE IF NOT EXISTS `news` (`id` INTEGER NOT NULL, `alias` TEXT, `date` INTEGER NOT NULL, " +
"`guid` TEXT, `content_type` TEXT, `data_source` TEXT, `dateAgo` TEXT, `link` TEXT, `photo` TEXT, " +
"`pubDate` TEXT, `section_guid` TEXT, `section_title` TEXT, `section_url` TEXT, `site` TEXT, " +
"`thumb` TEXT, `title` TEXT, `topic` TEXT, `topic_guid` TEXT, `topic_url` TEXT," +
" `num_photo` TEXT, `youtube` TEXT, " +
" `selected` INTEGER NOT NULL, PRIMARY KEY(`id`));"
Log.d("SQL", sql)
database.execSQL(sql)
}
}
@Volatile
private var instance: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase{
val tempInstance = instance
if(tempInstance != null){
return tempInstance
}
synchronized(AppDatabase::class.java){
val dbInstance = Room.databaseBuilder(context,
AppDatabase::class.java, "recipe-db")
.addMigrations(MIGRATION_1_2)
.build()
instance = dbInstance
return dbInstance
}
}
}
}
i spent hours but still did not get the solution. Whats problem with my migration query?
Upvotes: 0
Views: 767
Reputation: 1876
I found my problem, its because
expected
date=Column{name='date', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}
what i did is
date=Column{name='date', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'},
Upvotes: 0