最近项目架构新增了Room,在写示例demo的时候发现报错如下
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: RoomDemo.id (Sqlite code 1555 SQLITE_CONSTRAINT_PRIMARYKEY), (OS error - 88:Socket operation on non-socket)
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed:id (Sqlite代码1555 SQLITE_CONSTRAINT_PRIMARYKEY),(操作系统错误- 88:套接字操作非套接字)
意思插入数据时存在相同重复的ID,最简单直接的方法就是在Dao方法前面加 @Insert(onConflict = OnConflictStrategy.REPLACE) 就可以了
//通过@Insert 注解的onConflict 解决冲突(如果有老的数据存在则会进行替换,如果没有就插入)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertUser(cacheBean: RoomDemoEntity)