datenschwund bei mysql

Status
Nicht offen für weitere Antworten.

DP

Top Contributor
hi zusammen.

ich habe hier ein mehr oder weniger heftiges problem: meine mysql-db verliert permanent datensätze. ohne jegliche delete- oder update-anweisungen sind einzelne datensätze weg.

das durchforsten der bin-log brachte auch kein ergebnis.

hat jemand schonmal was davon gehört?!

danke
 

DP

Top Contributor
also das ist eine webapplikation die permanent läuft.

es geht um eine tabelle mit bestellpositionen (ca. 1.000.000 datensätze), ca. 300 sind verschwunden.

in der mysql-log sehe ich keinerlei deletes oder so - lediglich die korrekten inserts...

problem ist, dass ich von mysql keine projekterfahrungen habe, da ich bei meinen ex-arbeitgebern nur mit oracle/db2 gearbeitet habe... daher kann ich nicht sagen wie stabil mysql laufen soll...
 

Campino

Top Contributor
Eigentlich darf mySQL keine Daten verlieren.

Es gibt zwei Möglichkeiten:

sehr unwahrscheinlich ist, zumindest in deinem Anwendungsfall, dass mySQL per Prozess-kill beendet wurde (unter Win dass kreuzchen oben in der Ecke oder Strg-Alt-Entf). In diesem Fall gehen alle Daten, die bisher nur im Arbetsspeicher sin verloren. mySQL speichert, soweit ich weiß, erstmal alles im AS und kopiert auf Festplatte, wenn es ordnungsgemäß beendet wird ODER grade nichts besseres zu tun hat bzw. der AS voll ist.

wahrscheinlicher ist, dass ein UPDATE oderso Daten überschreibt. beispiel:

Code:
UPDATE `user` SET `name`='neu' WHERE `id`='10';

hierbei habe ich mal denn WHERE-Clause vergessen, und etwa 64 Datensätze beschädigt... :oops: Das tückische ist, dass es auf den ersten Blick richtig aussieht, schließlich wird der datensatz der geändert werden soll geändert, nur halt ALLE anderen auch....Beim Testen übersieht man das leicht Wenn nur 300 andere geändert wurden, könnte ich mir vorstellen, dass in einem WHERE-Clause was fehlt z.B.

Code:
UPDATE `user` SET `name`='neu' WHERE `nachname`='mueller'

statt

Code:
UPDATE `user` SET `name`='neu' WHERE `nachname`='mueller' AND `auftragssumme`='300'

Ich denke dass ganze läuft auf php, wie steht die max_execution_time? Wenn der Skript wegen Zeitüberschreitung abgebrochen wird, sieht der Client dass nicht unbedingt, der mySQL-Server kriegt auch nichts mit, aber ein am ende des Skripts stehender Query wird eventl. nicht ausgeführt, sehen kann man dass, wenn z.B. die INSERT-Querys auch nicht im Log sind...
 

Bleiglanz

Gesperrter Benutzer
es geht um eine tabelle mit bestellpositionen (ca. 1.000.000 datensätze), ca. 300 sind verschwunden.
kommt auch bei einer Mysql nicht vor, was soll das - beschreib mal dein Problem????

sind die Datensätze per INSERT eingefügt worden?

waren sie schon mal drin?

woher weisst du überhaupt, dass 300 fehlen?

tippe eher auf falsche querys, als dass die DB versehentlich 300 Datensätze verliert...
 

DP

Top Contributor
also problem ist, dass datensätze einfach flöten gehen.

auftrag wurde z.b. am 01.01.2001 korrekt verschickt und nie wieder angepackt. plötzlich sind bestellpositionen weg.

bin den db-code, log4j-output und mysql-log durchgegangen und da passiert nichts mit dem auftrag. die positionen sind trotzdem weg - von heute auf morgen...

woher weisst du überhaupt, dass 300 fehlen?

bestellwert aus auftrags-table != positionenwert in positionen-table


tippe eher auf falsche querys, als dass die DB versehentlich 300 Datensätze verliert...
dann müsste spätestens in der mysql-log was auftauchen...
 

Bleiglanz

Gesperrter Benutzer
>>also problem ist, dass datensätze einfach flöten gehen.

soweit waren wir schon

>>auftrag wurde z.b. am 01.01.2001 korrekt verschickt

was heisst verschickt? wurden die Positionen mit INSERT eingetragen (mit den richtigen Foreign keys) und hast du per SELECT SUM() deine Bindingung bestellwert aus auftrags-table = positionenwert geprüft und war das an dieser stelle in der datenbank OK?

>>und nie wieder angepackt.

was heisst angepackt?

>>plötzlich sind bestellpositionen weg.

soweit waren wir schon

>>bin den db-code,
>>log4j-output und mysql-log
>>durchgegangen und da passiert nichts mit dem auftrag.

bleibt die Frage, ob den die Positionen (Versand) wirklich mit INSERT eingetragen wurden (als Kopie der Positionen Bestellung?)

>>bestellwert aus
>>auftrags-table != positionenwert in positionen-table

nur weil diese beiden Summen verschieden sind, heisst das doch noch lange nicht, dass irgendwelche Zeilen verlorengegangen sind

drück dich bitte klarer aus...
 

DP

Top Contributor
also nochmal von vorne ;)

am 01.01.2005 hatte auftrag x einen gesamtwert von 500 aus 5 positionen zu je 100.

auftrag x wurde dann nicht mehr aufgerufen/bearbeitet etc.

am 01.03.2005 hat auftrag x einen gesamtwert von 500, aber nur noch 4 positionen zu je 100.

da die kalkulation vom gesamtwert nur berechnet wird, wenn der auftrag aufgerufen wird, ist eine position weg > datensatz weg.

auftrag wurde definitiv nicht bearbeitet (lt. log4j+mysql-log). ferner sind abgeschlossene aufträge sowieso nicht zu bearbeiten.

die sätze wurden per insert eingefügt und waren nachweislich vorhanden (rechnungen wurden ja gedruckt). hinterher ist z.b. an stelle y (autoincrement) kein satz mehr vorhanden.

bzgl. foreign keys:

ich habe die mysql-db vom ex-entwickler übernommen. die besagten tabellen sind vom typ myisam. habe nun gelesen, dass myisam für größere tabellen ungeeignet sei und man auf innodb umsteigen soll.

kann das der grund allen übels sein?

ich komme eher aus der oracle/db2-welt, daher bin ich mit der mysql-geschichte etwas überfragt was wiese problematik angeht bzw. musste mich sonst nie um db-administration kümmern ;)

was noch eigenartig ist: es werden zig-tausende aufträge so abgewickelt und seit kurzem haben ca. 5 aufträge am tag o.g. problem - absolut willkürlich :roll: wenn mein code schrott wäre, müssten ja alle aufträge gegen die wand laufen...
 

Bleiglanz

Gesperrter Benutzer
am 01.03.2005 hat auftrag x einen gesamtwert von 500, aber nur noch 4 positionen zu je 100.

ich komme eher aus der oracle/db2-welt
dann geh zum zuständigen hampelmann, schrei ihn völlig zusammen und lass ihn als strafaufgabe 1000 mal den satz

"DU SOLLST BERECHNETE WERTE NICHT IN DER DATENBANK SPEICHERN"

abmalen.

Wie kann der Gesamtwert 500 sein, wenn es nur 4 Pos a 100 gibt? Was soll das bedeuten...

da die kalkulation vom gesamtwert nur berechnet wird,
bullshit, wenn er berechnet wird und nur 4 datensätze a 100 da sind, dann wäre ja der gesamtwert 400

gibt es eine auftragstabelle? gibt es eine positionentabelle - da wären fk mit innodb natürlich angebracht

trotzdem wette ich drauf, dass

-> entweder ein anzeigefehler vorliegt
-> oder jemand mit delete die position gelöscht hat
-> ein multithreading problem
-> ein transaktionsproblem (ausdruck der rechnung zu früh?)

auch mysql verliert keine Zeilen
 

DP

Top Contributor
hat sich erledigt. die tabelle war beschädigt und lieferte auf anfragen zu wenig ergebnisse zurück.

nach einem myisamchk ist wieder alles bestens.

thx+cu
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
Juelin MySQL Datenbankmit glassfish und Netbeans Datenbankprogrammierung 18
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
M MySQL Datenbank in Array Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
sserio SQL oder MySQL Datenbankprogrammierung 44
OnDemand Mysql Query Builder Datenbankprogrammierung 1
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
OnDemand MySql Foreign Key nötig oder unnötig Datenbankprogrammierung 3
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
ruutaiokwu MySQL: Messwerte, welche stagnieren interpolieren? Datenbankprogrammierung 2
S Datenbank MySQL und Java Datenbankprogrammierung 8
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J MySQL MySQL Risiken bei Stromausfall minimieren Datenbankprogrammierung 9
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
D MySQL Eibinden des "mysql-connector" in eine fertige Jar Datenbankprogrammierung 3
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
K Servlet-MySQL DB Datenbankprogrammierung 2
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
D Datumsformat aus MySQL ändern Datenbankprogrammierung 15
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
K Anfängerfrage CSV in MySQL Datenbankprogrammierung 41
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
N MySQL Datenbank lokal Datenbankprogrammierung 3
B MySQL: Port ändern über GUI? Wo und wie Port ändern? Datenbankprogrammierung 0
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
P MySQL Connection Global Datenbankprogrammierung 13
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
M In MySql Datenbank schreiben Datenbankprogrammierung 6
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
windl MySQL und HSQLDB Datenbankprogrammierung 4
S Anbindung zur mysql von mit Swing und AWT Datenbankprogrammierung 22
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
M MySQL Datenbank durchsuchen Datenbankprogrammierung 5
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
Z MySQL Shopsystem mit mysql und Java Datenbankprogrammierung 8
S [MySQL] Topliste Datenbankprogrammierung 2
H Datenbank-Anbindung Java/MySQL Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
K MySQL Datenbankbackups Datenbankprogrammierung 5
G MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
kaoZ HyperSQL vs. MYSQL Datenbankprogrammierung 4
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
V Internationalization mit MySql Datenbankprogrammierung 1
K Adressverwaltung mit MySql und Java? Datenbankprogrammierung 11
M Java Mysql verbinden Datenbankprogrammierung 3
L Zugriff auf lokal gespeicherte mySQL Datenbank Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben