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:
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.