找到:TableInfo{name='news',Columns={alias=Column{name='alias',Type='text',affinity='2',notnull=false,PrimaryKeyPosition=0,DefaultValue='null'},Selected=Column{name='select',Type='integer',affinity='3',notnull=true,PrimaryKeyPosition=0,DefaultValue='null'},Link=Column{name='link',Type='text',affinity='2',notnull=false,PrimaryKeyPosition=0,列{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{,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 616 5-6190/com.ngerancang.cacheapipaging e/eglcodecommon:glutilsparamsize:unknow param 0x00008cdf 09-12 19:06:48.735 616 5-6190/com.ngerancang.cacheapipaging e/eglcodece通用:glutilsparamsize:unknow参数0x00008824
我的模型类看起来是这样的
@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'},
https://medium . com/Google-developers/understanding-migrations-with-room-f01e 04 b 07929上有一篇关于房间迁移的很棒的文章 然而,我仍然错过了房间中的“灾难”恢复机制(例如,当发生异常情况时,将清除并重新创建数据库的fallbackToDestructiveRecreationOnMigrationError(
并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。
我在存钱 进入我的房间数据库版本1。 现在我需要将
有没有办法告诉flyway在不应用迁移的情况下重新创建flyway表。例如,查看迁移文件夹中的脚本,假设它们都已应用,并简单地确保flyway表包含所有脚本。 我们的方案是,我们不允许在生产和(ISO;银行、认证)原因。规则说我们需要完全删除表。因此,当我们从生产副本重置测试环境时,我们需要重新创建飞行道表。现在,我们从现有的测试环境中复制和粘贴,但有时这与生产不同步,并且会发生各种问题。 因此,
获取以下异常: 预期: TableInfo{name='chat_table',Columns={message=column{name='message',type='text',affinity='2',notnull=false,primarykeyposition=0},messageStatus=column{name='message status',type='text',affin
我正在使用flyway数据库迁移工具和一个spring boot jpa项目。当我第一次运行服务器时,flyway希望迁移SQL,但表还没有创建。在这种情况下,flyway返回一个错误,该错误类似 spring.flyway.baseline-on-migrate=true spring.flyway.enabled=true spring.flyway.clean-on-validation-e