Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups de.comp.lang.* Forum > Newsgroup de.comp.lang.php.datenbanken
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup de.comp.lang.php.datenbanken Verwendung von PHP mit Datenbanken.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09-08-2009, 10:39 AM
Daniela Waranie
 
Beiträge: n/a
Standard MySQL: SELECT liefert "veraltetes Ergebnis" nach einem UPDATE Befehl

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
Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 09-08-2009, 10:54 AM
Sam Kang
 
Beiträge: n/a
Standard Re: MySQL: SELECT liefert "veraltetes Ergebnis" nach einem UPDATEBefehl

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)
Mit Zitat antworten
  #3  
Alt 09-08-2009, 03:23 PM
Claus Reibenstein
 
Beiträge: n/a
Standard Re: MySQL: SELECT liefert "veraltetes Ergebnis" nach einem UPDATEBefehl

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
Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus


Alle Zeitangaben in WEZ. Es ist jetzt 03:30 AM Uhr.



Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Forum SEO by Zoints