Mailinglisten-Archive |
Hallo zusammen, da muss ich mal wieder meinen Senf dazugeben :-) Mein erster Gedanke war "INSERT DELAYED ..." - könnte das evtl. sein Norbert ? Aber auch wenn nicht gibts dafür eine simple mögliche Erklärung: Du sagst Norbert das dZeit mittels now() gesetzt wird. Tja wann wird denn now() ausgeführt? Genau dann wenn die Query ausgeführt wird. Was passiert nun wenn du einen langen SELECT auf die Tabelle machst und andere Threads damit warten müssen? Da wir hier echtes Multithreading haben kann es da schon passieren das die Threads nicht in der "richtigen" Reihenfolge ausgeführt werden. Die Funktion now() wird nun erst während des eigentlichen Inserts ausgeführt - und das kann dann schon man etwas später sein als der Zeitpunkt an dem die Query abgesetzt wurde. Das würde auch die enge Verbindung zwischen den ID's erklären z.B. | 2817 | 2006-08-17 09:40:01 | | 2822 | 2006-08-17 09:40:01 | wurden scheinbar unmittelbar nacheinander eingefügt. Sieht man oben dann nochmal. Der AUTO_INCREMENT Wert wird nun scheinbar schon kurz nach dem Parsen erzeugt (was auch dem Inhalt von einem BIN-Log entspricht - da steht die ID drin und das SQL mit 'now()' siehe aus Replikationsdoku). Daher würde ich vorschlagen den Zeitpunkt nicht MySQL bestimmen zu lassen sondern von aussen mitzugeben. > 1. > " You can retrieve the most recent AUTO_INCREMENT value with the > LAST_INSERT_ID() SQL function or the mysql_insert_id() C API > function. > These functions are connection-specific, so their return > values are not > affected by another connection which is also performing inserts." Das bedeutet übrigends das wenn du einen insert auf Verbindung 1 machst und einen zweiten auf Verbindung 2 das ein mysql_insert_id() auf Verbindung 1 den Wert für das letzte Insert auf verbindung 1 liefert und mysql_insert_id() auf Verbindung 2 den Wert für das letzte Insert auf verbindung 2. Wäre ja schlimm wenn ich zu spät auf verbindung 1 den Wert abfragen würde und dann den Wert von Verbindung 2 bekomme. Das heist NICHT das hier dann pro Verbindung irgendwas gezählt wird! Gruß, Andreas
php::bar PHP Wiki - Listenarchive