![]() |
|
|||||||
| Newsgroup de.comp.lang.php.datenbanken Verwendung von PHP mit Datenbanken. |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Hallo zusammen,
ich bin mir nicht sicher ob es ein PHP oder ein MySQL Problem ist... Wenn ich folgendes mache: UPDATE table SET mycolumname=1 WHERE id=1 und direkt danach follgendes mache: SELECT * FROM table WHERE id=1 Dann bekomme ich nicht den aktualisierten Datensatz, ich bekomme also nicht mycolumnname=1, sondern den alten Wert für mycolumnname. Wenn ich es einige Sekunden später erneut probiere (SELECT * FROM table WHERE id=1), dann geht es. Ic bin mir nicht sicher, aber vielleich hat es mit einer hohen Latenz des UPDATE Befehls zu zun. Wie kann ich mein Problem lösen? Ich habe versucht mein PHP script für 2 Sekunden zwischen den beiden SQL Befehlen mit sleep() zu pausieren, dass hat aber nicht funktioniert. Kann man sich die Ausführung des UPDATE Befehl irgendwie bestätigen lassen (also auf die Ausführung warten, bevor man darauf aufbauende Folge-Befehle absetzt)? Best regards Daniela Waranie |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
Daniela Waranie schrieb:
> Wenn ich folgendes mache: > UPDATE table SET mycolumname=1 WHERE id=1 > > und direkt danach follgendes mache: > SELECT * FROM table WHERE id=1 > > Dann bekomme ich nicht den aktualisierten Datensatz, ich bekomme also > nicht mycolumnname=1, sondern den alten Wert für mycolumnname. Das sollte normalerweise so nicht sein. Was passiert wenn du: UPDATE table SET mycolumname=1 WHERE id=1; SELECT * FROM table WHERE id=1 am Stück machst? Glaskugel: Art der Ausführung? Master Slave Konfiguration? Sam -- Fortgeschrittene Ratlosigkeit ist nicht zu Unterscheiden von Boshaftigkeit. (J. Porter Clark) |
|
#3
|
|||
|
|||
|
Daniela Waranie schrieb:
> ich bin mir nicht sicher ob es ein PHP oder ein MySQL Problem ist... Ohne den dazugehörigen PHP-Code kann ich Dir das auch nicht sagen. > Wenn ich folgendes mache: > UPDATE table SET mycolumname=1 WHERE id=1 > > und direkt danach follgendes mache: > SELECT * FROM table WHERE id=1 > > Dann bekomme ich nicht den aktualisierten Datensatz, ich bekomme also > nicht mycolumnname=1, sondern den alten Wert für mycolumnname. Du gibt also im Kommandozeilenclient diese beiden Befehle ein und bekommst dieses Ergebnis? Das kann eigentlich gar nicht sein. Welche PHP-Version verwendest Du? > Wenn ich es einige Sekunden später erneut probiere (SELECT * FROM table > WHERE id=1), dann geht es. Das sieht verdächtig nach einer Race Condition aus. Das kann nur dann passieren, wenn zwei parallele Threads mehr oder weniger gleichzeitig diese beiden Befehle absetzen. Innerhalb eines Threads ist das, was Du hier beschreibst, schlicht nicht möglich. > Ich habe versucht mein PHP script für 2 Sekunden zwischen den beiden SQL > Befehlen mit sleep() zu pausieren, dass hat aber nicht funktioniert. Zeige doch mal Deinen PHP-Code. > Kann man sich die Ausführung des UPDATE Befehl irgendwie bestätigen > lassen (also auf die Ausführung warten, bevor man darauf aufbauende > Folge-Befehle absetzt)? Das tun die PHP-Funktionen normalerweise schon von sich aus. Gruß. Claus |
|
|
|
|