SQLite IntegrityError: UNIQUE constraint failed:
Asked Answered
C

1

13

I am just getting an weird error:

IntegrityError: UNIQUE constraint failed: jumptimes.player_id, jumptimes.map_id, jumptimes.runID

My SQL QUERY:

t = (playerid, mapid, timeTaken, (time() if not dateOverwrite else dateOverwrite), runID, runLeaveZoneVelocity, EnterZoneVelocity, averageVelocity, time())
log("PlayerID: %s | mapid: %s | timeTaken: %s | Date: %s | runID: %s | rlvz: %s | ezv: %s | avgvel: %s | firstFinish: %s" % t)
execute("INSERT INTO jumptimes (player_id, map_id, duration, date, runID, LeaveZoneVelocity, enterZoneVelocity, averageVelocity, firstFinish) VALUES (?,?,?,?,?,?,?,?,?)", t)

Log output:

17:45:11 - PlayerID: 13 | mapid: 34 | timeTaken: 55.2569999695 | Date: 1426265111.18 | runID: 0 | rlvz: 315.484661963 | ezv: 1159.06484472 | avgvel: 1374.49441131 | firstFinish: 1426265111.18

My Database structure:

CREATE TABLE IF NOT EXISTS jumptimes (
     id INTEGER PRIMARY KEY AUTO_INCREMENT,
     player_id INTEGER REFERENCES players ON DELETE CASCADE,
     map_id INTEGER REFERENCES maps ON DELETE CASCADE,
     duration REAL,
     `date` REAL,
     runID INTEGER,
     leaveZoneVelocity INTEGER DEFAULT 0,
     enterZoneVelocity INTEGER DEFAULT 0,
     averageVelocity INTEGER DEFAULT 0,
     server INTEGER DEFAULT 0,
     firstFinish REAL,
     completions INTEGER DEFAULT 1,
     UNIQUE (player_id, map_id, runID)
)

As the topic says, im always getting SQLite IntegrityError: UNIQUE constraint failed:

Chemo answered 13/3, 2015 at 16:52 Comment(1)
https://mcmap.net/q/302793/-sqlite_constraint_primarykey-sqlite3-result-code-1555-unique-constraint-failed-persons-id . This answer fully fixed the issue for me . Handles cases if u directly wanna replace if row already present.Povertystricken
D
27

The UNIQUE clause of your table's declaration states that every row's combination of player_id, map_id, and runID must be unique. You are getting this error because there is already a row in the jumptimes table withplayer_id = 13, map_id = 34, and runID = 0.

Here is a simple SQLFiddle reproducing the error. The "constraint" the error is talking about is the UNIQUE clause, and if you could see the full error, it would be the same as the one you're getting.

Dagmar answered 13/3, 2015 at 17:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.