Android 创建新表时,文件室迁移查询失败
我的房间迁移问题是什么?有人能看到这个吗 java.lang.IllegalStateException:迁移未正确处理: 新闻(com.ngerancang.cacheapipage.model.news) 预期: TableInfo{name='news',columns={alias=Column{name='alias',type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},selected=列{name='selected',type='INTEGER', affinity='3',notNull=true,primaryKeyPosition=0, defaultValue='null'},link=列{name='link',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},guid=列{name='guid',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},site=列{name='site',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},日期=列{name='date',type='INTEGER', affinity='3',notNull=false,primaryKeyPosition=0, defaultValue='null'},topic\u url=列{name='topic\u url',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},section\u url=列{name='section\u url', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},num_photo=列{name='num_photo',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},section\u guid=列{name='section\u guid', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},photo=列{name='photo',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},content\u type=列{name='content\u type', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},dateAgo=列{name='dateAgo',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},thumb=列{name='thumb',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},title=列{name='title',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},data\u source=列{name='data\u source', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},topic\u guid=列{name='topic\u guid', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},id=列{name='id',type='INTEGER', affinity='3',notNull=true,primaryKeyPosition=1, defaultValue='null'},pubDate=列{name='pubDate',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},youtube=列{name='youtube',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},主题=列{name='topic',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},section\u title=列{name='section\u title', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},foreignKeys=[],index=[] 发现: TableInfo{name='news',columns={alias=Column{name='alias',type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},selected=列{name='selected',type='INTEGER', affinity='3',notNull=true,primaryKeyPosition=0, defaultValue='null'},link=列{name='link',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},guid=列{name='guid',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},site=列{name='site',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},日期=列{name='date',type='INTEGER', affinity='3',notNull=true,primaryKeyPosition=0, defaultValue='null'},topic\u url=列{name='topic\u url',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},section\u url=列{name='section\u url', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},num_photo=列{name='num_photo',type='TEXT', affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},section\u guid=列{name='section\u guid', type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, 默认09-12 19:06:48.734 6165-6190/com.ngerancang.cacheapipage E/eglCodecCommon:glUtilsParamSize:未知参数0x00008cdf 09-12 19:06:48.735 6165-6190/com.ngerancang.cacheapie/eglcodeccomon: glUtilsParamSize:未知参数0x00008824 我的模型课看起来像这样Android 创建新表时,文件室迁移查询失败,android,kotlin,android-sqlite,android-room,Android,Kotlin,Android Sqlite,Android Room,我的房间迁移问题是什么?有人能看到这个吗 java.lang.IllegalStateException:迁移未正确处理: 新闻(com.ngerancang.cacheapipage.model.news) 预期: TableInfo{name='news',columns={alias=Column{name='alias',type='TEXT',affinity='2',notNull=false,primaryKeyPosition=0, defaultValue='null'},se
@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
)
我的数据库抽象类
@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
}
}
}
}
我花了几个小时,但仍然没有找到解决方案。我的迁移查询有什么问题?我发现了我的问题,因为 期望
date=Column{name='date', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}
我所做的是
date=Column{name='date', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'},
您是如何创建此迁移的?您是手动编写原始sql查询的吗?@cewaphi我作为变量migration_1_2编写的。然后我在database builderyeah中添加了这就是您告诉
Room
如何在DB版本之间转换的方式。但是您是如何验证迁移方法中的原始sql命令与对Roo所做的更改相同m
entities?@cewaphi你是说我的数据库类吗,我更新了我的问题,也许会很清楚