Zum Inhalt springen

Probleme beim Cachen (sporadisch "Duplicate Entry")

Erstellt am 11. Juli 2006 · Noch keine Antworten

Tags: Datenbank, Cache & Performance, Frage

rapthor ·

Hallo,

ich bekomme sporadisch eine "Duplicate Entry Exception" beim Aufruf einer Seite. Dies geschieht aber nur, wenn das Cachen aktiviert ist. Um der Sache auf den Grund zu gehen, suchte ich nach der Funktion, die dieses Cachen vornimmt.

Hier ist sie:

function storeHash($hash,$data,$ident) {
$insertFields = array(
'hash' => $hash,
'content' => $data,
'ident' => $ident,
'tstamp' => time()
);
$GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_hash', 'hash='.$GLOBALS['TYPO3_DB']->fullQuoteStr($hash, 'cache_hash'));
$GLOBALS['TYPO3_DB']->exec_INSERTquery('cache_hash', $insertFields);
}

Warum tritt nun ab und zu diese Ausnahme auf, die ja zu bedeuten scheint, dass die neu einzutragende Zeile in der Tabelle "cache_hash" schon vorhanden ist? Aber dadurch, dass DELETE VOR dem INSERT steht, gehe ich davon aus, dass die Zeile gelöscht wird.

Ich denke mal, dass der Hash-Wert dem Primary Key entspricht.
Ein "Duplicate Entry" tritt ja dann auf, wenn dieser Schlüssel schon vorhanden ist und somit das INSERT nicht funktioniert. Aber warum schlägt dann das DELETE mit dem gleichen Hash-Wert fehl?

Kann mir da jemand weiterhelfen?[/b]