dedlfix: MySql 5 -> Bei UPDATE einen Datenverlust vermeiden

Beitrag lesen

Hi!

Versuch bitte beim Zitatkürzen, dass die Zitatzeichenanzahl hinterher noch stimmt.

evtl. waren die Felder schon in der Query leer, weil mein Script diesen Fehlerfall nicht vernünftig abfängt.
Wie könnte ich vernünftig den fehler abfangen. Ein Feld, oder zwei Felder auf $inhalt != ""; prüfen und nur das Update zulassen, falls Inhalte vorhanden? Oder gibts da was Geeineteres?

Zunächst solltest du die Ursache ermitteln. Irgendwelche Maßnahmen zu suchen, von denen du nicht weißt, ob sie die Ursache wirksam treffen oder nur dein Testszenario erfolgreich überstehen, in der freien Wildbahn dann aber wieder zu Verlust führen, ist nicht wirklich hilfreich.

Wenn deine Anwendung zulässt, dass der Client ungestraft Leerfelder schicken darf, obwohl das die Aufgabenstellung nicht gestattet, und du diesen Fall nicht abfängst, dann ... selbst dran schuld.

Ansonsten würde ich die SQL-Statements loggen. Einfach so nachzustellen wirst du den Fehler nicht können, oder? Deshalb ist wichtig, was tatsächlich passiert ist festzuhalten. Auch der Weg dahin ist interessant. Wie sehen die Variableninhalte an strategisch wichtigen Stellen des Programmablaufs aus? Die solltest du loggen oder bei Nachstellbarkeit durch Kontrollausgaben überprüfen.

Mit einer Versionierung arbeiten, statt Datensätze zu überschreiben werde ich mir genauer anschauen und vornehmen.

Das muss dann auch von der Aufgabenstellung her sinnvoll sein. Denn das bedeutet auch Mehraufwand beim Auswerten, sollen nur die aktuellen und nicht alle Historiendatensätze berücksichtigt werden. Versionierung würde ich nicht als Fehlerbekämpfung einsetzen sondern, wenn es tatsächlich benötigt wird. Fehler kann man mit geeigneten Backups ungeschehen machen.

Lo!