PHP5 / MySQL5 - Datensätze "verschwinden"
am 30.07.2007 19:00:01 von Sebastian KrausMahlzeit.
Ich hab eine PHP Anwendung, die Daten in eine Datenbank schreiben soll.
Diese Datenbank ist ein MySQL 5 Server, eigentlich ganz sinnvoll
konfiguriert, und im Prinzip exzellent funkionierend.
Jetzt schreibe ich in meinem PHP-Script einen INSERT Befehl, welcher
eine Tabelle mit 3 BIGINT-Spalten um einen Datensatz erweitern soll.
Beispiel:
INSERT INTO table (row1, row2, row3) VALUES (1, 2, 3);
Über alle 3 Spalten ist ein Primärschlüssel gesetzt, was bedeutet, dass
die 3 Felder in der Tabelle UNIQUE sein müssen. Andernfalls kommt ein
MySQL Fehler, dass eben dies nicht so ist.
Wenn ich nun diesen Befehl abfeuere, bekomme ich keine Fehlermeldung
geliefert, und der Satz steht in der Datenbank. Der SQL-Befehl per
PHPMyAdmin ausgeführt, liefert ebenfalls das gewünschte Resultat: Der
Datensatz wird der Tabelle hinzugefügt.
Soweit also alles ganz wunderbar.
Sobald das Script fertig ist, ist der Datensatz weg. Ich habe das anhand
eines nebenher laufenden Scripts geprüft, welches jede Zehntelsekunde
prüft, ob ebendieser Wert in der Tabelle steht. Für einen Zeitraum von
etwa 0.3 Sekunden steht der Wert in der Tabelle, und lässt sich mittels
SELECT abfragen.
Sobald dieser Zeitraum vorbei ist, liefert der SELECT-Befehl den
Datensatz nicht mehr.
Die Festplatte bietet noch genügend Platz.
Manuell (phpMyAdmin) eingefügte Zeilen bleiben erhalten.
MySQL, PHP und System-Protokoll zeigen keinerlei Auffälligkeiten.
Ich habe auch meine Scripte dahingehend angepasst, dass sie nur über
eine von mir vorgegebene QUERY-Funktion auf die Datenbank zugreifen
können, die alles minutiös mitprotokolliert.
Während der Scriptlaufzeit ist der Datensatz da, sobald PHP beendet ist,
ist er aus der Tabelle entfernt.
Ich verwende keine Transaktionen, und die MySQL-Verbindung wird mittels
Destruktor in der vorgeschriebenen Art und Weise beendet, mittels
mysql_close (welcher keine Fehlermeldung abliefert).
Auch ein Repair-Table brachten keine Änderung.
Hat irgendjemand eine Idee, was da schief läuft?
MFG
Sebastian Kraus