Autor Beitrag
xel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 01.12.04 11:24 
Also Tabellen angelegt und Programm soweit fertig programmiert.. aber leider bekomme ich ab und zu
eine Fehlermeldung mit dem ich nichts anfangen kann?!?!?

hier:
Datensatz kann nicht gesperrt werden, da der Datensatz von einer anderen Benutzter geändert wurde.


Was ist das und was muss ich tun damit es nicht mehr kommt???

mfg & Danke!
Xel
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 01.12.04 11:28 
Titel: Re: Fehlermeldung bei Datenänderung oder löschung - mySql &a
Xel hat folgendes geschrieben:
Was ist das und was muss ich tun damit es nicht mehr kommt???

Ein anderer Benutzer hat den selben Datensatz wie du bearbeitet und gespeichert. Und zwar, bevor du die Änderung mitbekommen hast. Das kommt bei Datenbanken vor.
Abfangen kannst du das schon, aber da möchte ich doch auf die Antworten der mySQL-Spezis warten.
Falls da nichts kommt, schreib ich nochmal was dazu.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.12.04 11:32 
Jo, das notwenidige Handling kommt auf die Komponenten an, mit denen Du arbeitest. Welche sinds denn?

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
xel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 01.12.04 11:54 
Titel: Ja die Standart Komponenten von Delphi - nix mit Zeos!
Ja die Standart Komponenten von Delphi - nix mit Zeos!
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.12.04 12:27 
Na dann solltest mal auf Zeos oder SciBit gehen, da dürfte das Problem nicht auftauchen weil mySQL nen recht simples Lock-Handling hat.

Aber wenn Du mit Standardkomponenten drauf zugreifst kann Dir sicher jasocul jede Menge Hinweise geben. Da muss ich leider passen.

_________________
Ha! Es compiliert! Wir können ausliefern!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 01.12.04 12:33 
Danke für die Vorschuss-Lorbeeren.
Bessere Komponenten sind bestimmt von Vorteil. Ansonsten kommt doch ein "bisschen" manueller Prüfaufwand auf Xel zu.
Warten wir mal, was er dazu meint.
xel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 01.12.04 12:54 
Titel: Ich muss/will die Delphi Standart Komponenten verwenden!
Ich muss/will die Delphi Standart Komponenten verwenden!

Ansonsten habe ich alles Manuel geprüft, aber nichts gefunden.. deshalb bin ich jetzt hier :D
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Mi 01.12.04 13:15 
Ich tippe einfach mal ins Blaue.
Nimm den Tabellentyp InnoDB und nutze Transaktionen dann sollte sich das Problem eigentlich erledigt haben.

Also vor insert/update/delete "set autocommit = 0;" aufrufen und nachdem alle Statements abgesetzt und erfolgreich durchgelaufen sind "commit;" hinterher ansonsten "rollback;"

btw: Standard

Bis neulich ...
xel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 01.12.04 15:15 
Titel: Funktioniert nicht , bitte weitere vorschläge
InnoDB nicht vohanden das andere auch nicht!? wo genau ist das habe Delphi 6.0 mit allen updates SP2 und so!


HILFE, HILFE, HILFE!!

Danke!
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Mi 01.12.04 15:41 
Titel: Re: Funktioniert nicht , bitte weitere vorschläge
Xel hat folgendes geschrieben:
InnoDB nicht vohanden

InnoDB ist ein MySQL Tabellentyp hat also nix mit Deiner Delphi Version zu tun.
Guck mal in die my.cnf; Irgendwo gabs da sowas wie IgnoreInnoDb oder SkipInnoDb o.ä. ggf. musst Du den Wert noch ändern. Die MySQL Doku hilft das weiter.

Xel hat folgendes geschrieben:
das andere auch nicht!?

Das "andere" sind bloß SQL Statements die Du absetzten muss um Transaktionen einzuleiten/abzuschließen. Daher können die ja noch nirgendwo vorhanden sein.

Bis neulich ...
xel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 02.12.04 09:26 
Titel: Problem weiter Vorhanden!?!?!?!
Also mit all diesen Informationen konnte ich nichts anfangen, problem ist noch da!?

Also "jasocul" hast du nich eine Antwort parad oder soll ich/wir aufgeben!?
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Do 02.12.04 09:41 
Titel: Re: Problem weiter Vorhanden!?!?!?!
Xel hat folgendes geschrieben:
Also mit all diesen Informationen konnte ich nichts anfangen, problem ist noch da!?

Was genau hast Du denn nicht verstanden?
Und was bitte ist daran so schwer mal bei mysql.com nach InnoDB zu suchen!? Da steht doch alles ausführlichst erklärt.

Bis neulich ...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 02.12.04 10:04 
Titel: Re: Problem weiter Vorhanden!?!?!?!
Xel hat folgendes geschrieben:
Also mit all diesen Informationen konnte ich nichts anfangen, problem ist noch da!?
Also "jasocul" hast du nich eine Antwort parad oder soll ich/wir aufgeben!?

Sorry, mir ist gestern Abend was privates dazwischen gekommen. Wenn ich davon ausgehe, dass du Datensätze nicht mit einem Lock belegen kannst, stelle ich mir die Lösung so vor:
1. Bevor du den Datensatz in Bearbeitung, bastelst du dir eine lokale Kopie (Record?).
2. Danach bearbeitest du ihn.
3. Vor dem Speichern prüfts du, ob die lokale Kopie noch mit den Daten in der Datenbank übereinstimmt. Falls ja, kannst du versuche zu speichern. Falls nicht, wurde der Datensatz zwischenzeitlich von einem anderen Benutzer geändert.
4. Falls Fall zwei eintritt, musst du dir überlegen, ob du den Datensatz neu holst und dann deine Änderungen speicherst (dafür musst dann diese zwischenspeichern) oder ob die Änderungen verworfen werden.

Andere Lösung:
Du baust dir eine Locking-Tabelle in die Datenbank ein und verwaltest das Locking selbst. Dann musst du vor Bearbeitung eines Datensatzes nur in die Lockign-Tabelle sehen, ob der Datensatz schon gesperrt ist oder nicht. Schwierig wirds dann bei Programmabstürzen. Dafür musst du dir dann ein Tool basteln, mit dem du eventuelle Locks wieder aufheben kannst. Ist zwar aufwendig (ich schreibs nicht mit "ä"), aber sicherer als obige Methode. Wenn mySQL Trigger kennt, wird es etwas einfacher. Aber ich glaube das kennt mySQL nicht.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Do 02.12.04 10:47 
@Grendel: innoDB ist nicht für jeden Einsatzzweck geeignet. Ausserdem gibt es bei innoDB derzeit bekanntermaßen noch Lizenzprobleme.

Darüber hinaus lässt sich noch sagen, dass dieselben Probleme auch bei innoDB auftreten werden ;-)

_________________
Ha! Es compiliert! Wir können ausliefern!
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Do 02.12.04 12:38 
neojones hat folgendes geschrieben:
@Grendel: innoDB ist nicht für jeden Einsatzzweck geeignet. Ausserdem gibt es bei innoDB derzeit bekanntermaßen noch Lizenzprobleme.

So gibt es die bekanntermaßen?! Und ist Xels Einsatzgebiet durch die Lizenz ausgeschlossen? Wenn dem so sein sollte dann würde ich mich für eine andere DB entscheiden. z.B. Firebird oder Postgres.

neojones hat folgendes geschrieben:
Darüber hinaus lässt sich noch sagen, dass dieselben Probleme auch bei innoDB auftreten werden ;-)

Falsch. Ich hab selber schon oft genug sowohl über BDE als auch über DbExpress Datenbankapplikationen auf InnoDB Basis entwickelt und niemals locking Probleme gehabt. Man muss halt nur wissen, wie man Transaktionen unter MySQL nutzen kann und die werden eigentlich nur mit InnoDB wirklich sauber unterstützt. Evtl. gehts mittlerweile auch mit anderen Tabellentypen von daher ist das Stichwort zur Problemlösung "Transaktionen". War vielleicht etwas misverständlich ausgedrückt.

Bis neulich ...