Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   mySQL Insert / Select Cache? (https://www.delphipraxis.net/173183-mysql-insert-select-cache.html)

greenmile 11. Feb 2013 15:25

Datenbank: mySQL • Version: 3.3.5.1 • Zugriff über: PHP 5.0.32

mySQL Insert / Select Cache?
 
Hallo,

ich habe ein recht sonderbares Problem. In einem PHP Script füge ich die eingehende IP, wenn Sie bestimmte Kriterien erfüllt, in eine SQL Tabelle ein. Vorher wird geprüft, ob die IP in der Tabelle vorhanden ist, falls ja, wird sofort mit Die() beendet. Ich verwende ganz normale "insert into ..." und "select where" Klauseln. Beim Einfügen/Abfragen kommt auch kein mysql_error, trotzdem kommt es öfters vor, dass eine IP nicht in der Liste enthalten ist (also "select where" nichts zurück liefert), obwohl es beim Insert ein OK gab. Ich hatte erst den Cache in Verdacht und habe ein FLUSH TABLE nach jedem "Insert" abgesetzt, verwende "select no cache" bei der Abfrage, trotzdem kommt es öfters vor, dass die IP angeblich nicht enthalten sein soll. Zeitlich liegt zwischen den Anfragen auch mehr als 1 Minute, es müsste also genügend Zeit zum schreiben vorhanden sein.

Kennt jemand dieses Problem und hat im optimalen Fall eine Lösung/Idee für mich?

DeddyH 11. Feb 2013 15:35

AW: mySQL Insert / Select Cache?
 
Könntest Du nicht die INSERT ... ON DUPLICATE KEY UPDATE Syntax benutzen?

[edit] Ich habe gerade erst die MySQL-Version gesehen :shock:. Ob das da schon geht, weiß ich leider nicht. [/edit]

greenmile 11. Feb 2013 16:13

AW: mySQL Insert / Select Cache?
 
Das kam, glaube ich, mit 5.5, würde aber auch das Problem nicht lösen. Es sieht so aus als wenn das "SELECT" Statement den vorherigen "INSERT" Eintrag nicht finden würde. Entweder weil es sich überschneidet (zwei Abfragen zur selben Zeit), dann würde ich aber einen Error bekommen. Wenn beim INSERT was schief geht, würde ich, denke ich mal, ebenfalls einen Error bekommen. Bliebe noch der Cache, quasi INSERT ist erledigt, aber der SELECT Cache weiß noch nichts davon. Dann würde ja FLUSH TABLE greifen. Ich habe leider keine Idee mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz