AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz Sperre MySQL

Ein Thema von KlausV · begonnen am 6. Dez 2022 · letzter Beitrag vom 9. Mai 2023
Antwort Antwort
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#1

Datensatz Sperre MySQL

  Alt 6. Dez 2022, 12:06
Datenbank: mysql • Version: mysql-5.5.47-0.17.1 • Zugriff über: ODBC
Hallo Zusammen,
ich finde einfach den Fehler nicht, weil manchmal funktioniert es und manchmal nicht.
Fehlermeldung: "Datensatz kann nicht geändert werden, da der Datensatz von einem anderen Benutzer gesperrt wurde"

MySQL Zugriff erfolgt über ODBC.

Ich habe ein Grid. In diesem Grid werden Datensätze angezeigt. Es gibt eine Checkbbox im Grid, die offen für die Verwaltung ist. Die zugehörige TQUERY Komponente hat die Eigenschaft RequestLive TRUE. Dadurch kann ich direkt im Grid in die Datenbank schreiben. Nun hake ich den ersten Satz an, das funktioniert und dann den zweiten und dann kommt die Fehlermeldung, aber nicht immer. Mir ist dabei aufgefallen, dass nach dem ersten click noch keine Änderung in der DB vollzuogen ist, erst beim 2. click, der aber ja nicht funktioniert, weil die Fehlermeldung kommt.

Ich weiß, dass es ab und an Probleme mit mysql gibt, aber wie kann man das lösen.

Danke schon mal.

Gruß Klaus
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.241 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datensatz Sperre MySQL

  Alt 6. Dez 2022, 16:53
Bist du sicher, dass die Meldung so lautet?
Fehlermeldung: "Datensatz kann nicht geändert werden, da der Datensatz von einem anderen Benutzer gesperrt wurde"
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#3

AW: Datensatz Sperre MySQL

  Alt 6. Dez 2022, 17:10
Ja, sicher.
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Datensatz Sperre MySQL

  Alt 6. Dez 2022, 22:10
1. diese Version von mySQL ist uralt. Warum quält man sich mit sowas?
2. Deinen Angaben kann man nicht entnehmen, welche storage engine verwendet wird. Diese dürfte aber wichtig sein, um das Sperrverhalten zu beurteilen.
3. Einfache (ältere oder schlechte) Systeme sperren nicht gezielt Datensätze, sondern ganze Blöcke. Es würde dazu passen, dass der Effekt nicht immer auftritt, nur wenn beide DS im gleichen Block liegen.
4. Der Code zum Speichern kann natürlich auch problematisch sein, ist aber nicht aufgeführt.
Gruß, Jo
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#5

AW: Datensatz Sperre MySQL

  Alt 7. Dez 2022, 09:23
1. diese Version von mySQL ist uralt. Warum quält man sich mit sowas?
2. Deinen Angaben kann man nicht entnehmen, welche storage engine verwendet wird. Diese dürfte aber wichtig sein, um das Sperrverhalten zu beurteilen.
3. Einfache (ältere oder schlechte) Systeme sperren nicht gezielt Datensätze, sondern ganze Blöcke. Es würde dazu passen, dass der Effekt nicht immer auftritt, nur wenn beide DS im gleichen Block liegen.
4. Der Code zum Speichern kann natürlich auch problematisch sein, ist aber nicht aufgeführt.
Ja, das stimmt leider, die mysql ist uralt und danke für die Infos.

Ich vermute, dass es an diesem RequestLive = True liegt. Werde mir etwas anderes überlegen.
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#6

AW: Datensatz Sperre MySQL

  Alt 3. Mai 2023, 12:33
Ich habe noch nicht die Lösung gepostet, sorry.
Es lag nicht an RequestLive = True sondern am UpdateMode. Dieser ist auf upWhereKeyOnly zu stellen, dann funktioniert es. Ich habe aber keine Ahnung, wieso es bis vor kurzen noch funktioniert hat. Vielleicht hat jemand noch eine passende Idee?
Was ich herausgefunden habe, der Mode upWhereKeyOnly geht mit Sperren anders um, d.h. benutzen zwei user den gleichen record, dann bekommt der eine User keine Meldung, dass der Satz gesperrt ist. Ergo, müsste es doch irgendwelche Sperren geben in den internas von mysql. Ein reboot bringt vermutlich auch nichts. Wo könnte ich noch schauen. Ein SHOW OPEN TABLES zeigt mir auch keine Sperren.
----------------------------------------------
Klaus

Geändert von KlausV ( 3. Mai 2023 um 12:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz