MySQL 5 - Tabelle verliert Datensätze nach komplexen Statement ?

TuxCommander

Mitglied
Guten Morgen,

also ich habe ein merkwürdiges Phänomen bei ein Tabelle beobachtet welches mir irgendwie Zahnschmerzen bereitet.
Ich habe es auch schon in anderen Foren gepostet und da konnte mir aber bisher keiner was sagen.

So, zum Problem :
Es ist eine MyIsam Tabelle die schlicht und ergreifend Datensätze verliert.
Zuerst war es anfangs immer nur ein bestimmter Tupel der entfernt wurde.
Mittlerweile wird aber die gesamt Tabelle geleert -.-

Es war anfangs auch so als wäre der gelöschte Tupel nie da gewesen, denn der Autoinkrement wurde auch zurückgesetzt sodass die laufende Nummer des Tupels wieder verfügbar war.

(Einzelner Datensatz zurück gesetzt ? oO)

Jetzt seitdem die Tabelle komplett geleert wird zählt der Inkrement aber normal weiter.

(Also gelöscht nicht zurück gesetzt.)

Die Überprüfungsmöglichkeiten seitens des MySQL Servers habe ich genutzt und die sagten mir das mit der Tabelle alles in Ordnung wäre.

Aber genau das kann nicht sein!
In der Tabelle waren ca. 8 Datensätze und die Tabelle hatte eine Größe von 4,1 KB.
Diese Größe hat sie auch nachdem alle Tupels "verschwunden" sind, obwohl eine leere Tabelle immer mit der Größe 1 KB angegeben wird. (Index Größe)

Also noch ein Indiz dafür das die Datensätze gelöscht werden und die Tabelle nicht zurückgesetzt wird.

ABER

Es gibt in dem gesamten Projekt KEIN Statement welches eine Löschanweisung auf dieser Tabelle ausführt

Ich muss dazu sagen, dass das Statement richtig fies ist.
Es sind mehrere in einander geschachtelter "IFs" und und "CASEs" in dem Query aber es gibt mir, unter allen Möglichkeiten die das Query hat, nie einen Fehler aus.
Nur halt das nach undefinierter Zeit nicht nachvollziehbar Datensätze fehlen.

Jemand schon mal was ähnliches erlebt? Oder ne Ahnung was es sein könnte?

Und bitte keine Fragen ob ich sicher bin, dass es wirklich kein DELETE oder TRUNCATE auf die Tabelle gibt.
 
Poste doch einfach mal dein Statement weil so können wir nicht sehen was es macht.
Anhand von beschreibungen etwas zu erzählen und zu verstehen ist schon sehr schwierig wenn es um Programmiersprachen oder Datenbanken geht.

Lg Dennis
 
Hallo Dennis und danke für deinen Post :)

Ich kann den Code nicht Posten :-(
Er wird dynamisch generiert und und ist ausserdem immer mit anderen Werten gefüllt was es mir schon streckenweise echt schwierig macht ihn zu lesen und zu verstehen.
Und jemand der nicht im Thema ist und die dazu gehörigen Scripte nicht kennt hat`s noch schwerer.

Ich will auch gar nicht das jemand den Code auswertet. Das würde mit allen Scripten eh zu lange dauern und ohne die erschließt sich der Sinn der ganzen Sache leider nicht.

Außerdem Funktioniert er ja^^

Ich will nur wissen ob es möglich ist und/oder, ob schon mal jemand sowas oder ähnliches erlebt hat, dass eine komplexe Abfrage einen MySQL Server unter bestimmten Umständen so strubbelig machen kann dass der er eine Tabelle zerschießt.

Habe das jetzt auf zwei verschiedenen Servern erlebt :-(
 
Zuletzt bearbeitet:
Eine klare Anwort: Nein.

Wenn du eine SELECT Anweisungen benutzt befindest, kannst du keine Änderungen an der Datenstruktur vornehmen.
Solltest du jedenfalls [wiki]DML[/wiki]-Befehle benutzen die du durch irgendwelche selbstschreibene Statements erzeugst, kann es vorkommen das ein UPDATE mit einem DELETE vielleicht verkehrt läuft.

Hab ich dich soweit richtig verstanden, dass du nur SELECT-Befehle verwendest?
Sollte das der Fall sein, erzeuge einfach einen User und gibt ihm nur die SELECT-Rechte und führ deine Anweisungen aus. Sollte dabei trotzdem noch was gelöscht werden dann würde mich das sehr wundern.

Jede Datanbank hat strikte Linien und sollte auch mit noch so schwierigen Fragen fertig werden.
Hab auch viele komplexe Anweisungen geschrieben und bei mir ist noch nie was aus dem Ruder gelaufen.

p.s. Oder du bist durch irgend einen dummen Zufall auf ein Bug bei MySQL gestoßen das will ich ja hier nicht ausschließen ;)
 
Zurück