【问题标题】:SQLiteDatabase: Error inserting. But it inserts collectly, What's the problem?SQLiteDatabase:插入错误。但是它是集体插入的,有什么问题吗?
【发布时间】:2025-12-11 13:20:06
【问题描述】:

我收到此错误。而且我没有关于插入的代码。有什么问题...?

2021-07-06 11:00:00.379 1189-8086/com.google.android.gms E/SQLiteDatabase: Error inserting flex_time=3097000 job_id=-1 period=6195000 source=16 requires_charging=0 preferred_network_type=1 target_class=com.google.android.gms.measurement.PackageMeasurementTaskService user_id=0 target_package=com.google.android.gms tag=Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG task_type=0 required_idleness_state=0 service_kind=0 source_version=201817000 persistence_level=1 preferred_charging_state=1 required_network_type=0 runtime=1625536800377 retry_strategy={"maximum_backoff_seconds":{"3600":0},"initial_backoff_seconds":{"30":0},"retry_policy":{"0":0}} last_runtime=0
    android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: pending_ops.tag, pending_ops.target_class, pending_ops.target_package, pending_ops.user_id (code 2067 SQLITE_CONSTRAINT_UNIQUE)
        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:938)
        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790)
        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:88)
        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1701)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1570)
        at apla.a(:com.google.android.gms@201817022@20.18.17 (040700-311416286):78)
        at apkp.a(:com.google.android.gms@201817022@20.18.17 (040700-311416286):196)
        at apkp.a(:com.google.android.gms@201817022@20.18.17 (040700-311416286):20)
        at apkp.a(:com.google.android.gms@201817022@20.18.17 (040700-311416286):190)
        at apgy.run(:com.google.android.gms@201817022@20.18.17 (040700-311416286):8)
        at sji.b(:com.google.android.gms@201817022@20.18.17 (040700-311416286):12)
        at sji.run(:com.google.android.gms@201817022@20.18.17 (040700-311416286):7)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at spj.run(:com.google.android.gms@201817022@20.18.17 (040700-311416286):0)
        at java.lang.Thread.run(Thread.java:923)

【问题讨论】:

    标签: android android-sqlite android-room


    【解决方案1】:

    看起来它违反了unique key 约束。在我们看到架构之前不确定在哪一列,但很可能是它的pending_ops.user_id

    您必须删除唯一键约束以允许同一 pending_ops.user_id 的多个记录,或者您可以尝试使用此命令:

    INSERT or REPLACE into tablename VALUES (value1,value2 , so on );
    

    您可以尝试在此链接上查看更多信息:SQLite3 UNIQUE constraint failed error

    【讨论】: