Je reçois juste une erreur bizarre:
IntegrityError: UNIQUE constraint failed: jumptimes.player_id, jumptimes.map_id, jumptimes.runID
Ma requête SQL:
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)
Sortie du journal:
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
Ma structure de base de données:
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)
)
Comme le dit le sujet, je reçois toujours SQLite IntegrityError: UNIQUE constraint failed:
La clause UNIQUE
de la déclaration de votre table indique que la combinaison de chaque ligne de player_id
, map_id
et runID
doivent être uniques. Vous obtenez cette erreur car il existe déjà une ligne dans la table jumptimes
withplayer_id = 13
, map_id = 34
, et runID = 0
.
Voici un simple SQLFiddle reproduisant l'erreur. La "contrainte" dont parle l'erreur est la clause UNIQUE, et si vous pouviez voir l'erreur complète, ce serait la même que celle que vous obtenez.