AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MySQL Duplicate Entry Auto-Inc

MySQL Duplicate Entry Auto-Inc

Ein Thema von JRichmann · begonnen am 29. Dez 2015 · letzter Beitrag vom 31. Dez 2015
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 09:14
@jobo

Wenn du mit mehr als einem Thread auf die gleiche Session zugreifst dann kann bei jeder DB alles passieren (meistens Grütze).

Jede Session ist an einen Thread gebunden und bei einer vernünftigen Implementierung (dieses Connection-Objekts) würde dir eine Exception um die Ohren fliegen, wenn du mit mehr als einem Thread gleichzeitig darauf zugreifst.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
190 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 09:20
Damit hast Du vollkommen Recht Sir Rufo (jeder Thread eine Connection), aber Jobo meinte, dass, wenn die ID vom DBMS erzeugt wird, eigentlich nichts passieren sollte.
Das DBMS bekommt über das INSERT-Statement eine Anforderung für eine neue ID (auto increment) und sollte diese auch entsprechend bereit stellen. Was clientseitig passiert ist da erst einmal egal (Threads) ... ist schon komisch, dass das DBMS das irgenwie nicht hinbekommt.
Thomas Forget
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 09:28
Es werden auch 2 IDs erzeugt, aber die letzte wurde bei beiden Datensätzen eingetragen (per last_inserted_id )

Die beiden Statements müssen nur zeitlich sehr dumm zusammenfallen. Man spricht hier von einer Bei Google suchenrace condition
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jobo

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

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 09:38
Also ich habe sowas noch nie gehabt. Wenn sowas tatsächlich passiert, müsste ich über einen Kirchenaustritt nachdenken.
Ich arbeite allerdings auch nicht produktiv mit mysql.
Bevor ich dem nachgehen würde (aus Neugier), würde ich lieber andere Dinge prüfen:
- Datentyp der Auto Inc Spalte, scheint hier groß genug
- Dictionary Schrott durch manuelle Einträge, scheints ja hier zu geben. Wurde zumindest testhalber durchgeführt. Also AutoInc Wert per Alter Table neu setzen ("heilen")
- Sicherstellen(!), dass die Grundannahme "nur ein Client" tatsächlich richtig ist.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
190 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 09:45
@Sir Rufo: Okay. Wenn man nur eine Connection für mehrere Threads (mit INSERT-Statements) benutzt kann die MySQL-Server-Variable LAST_INSERTED_ID nicht unbedint dem entsprechen, was man sich so vorstellt ... das hatte ich nicht beachtet.
Ich gehe einfach davon aus, dass MySQL die ID´s richtig erzeugt (AutoInc), sonst hätten wir schon Gegenteiliges gehört

@jobo: du musst bestimmt nicht deswegen aus der Kirche austreten, hier läuft bestimmt was Anderes schief ...
Thomas Forget
  Mit Zitat antworten Zitat
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#16

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 10:01
Mich wundert das auch arg.

Wir befeuern einige MySQL Server mit vielen, gar massig an Datensätzen. Teilweise Standortdaten zur Routenberechnnung in Logistikzentren. Da kommen teilweise viele Datensätze in einer Sekunde an. Wir konnten aber noch nie diesen Effekt beobachten mit MySQL+MSSQL (hier nicht gefragt) beobachten. Mehr Datenbankverwaltungssysteme kenne ich nicht produktiv.

Du schließt die Übergabe der ID (des PK / AI-Feldes) aus. Somit ist also MySQL gefragt. --> ok
Sicherlich habt ihr die my.ini konfiguriert. Könnte Dir da ein Zusammenhang einfallen? (Clustern werdet ihr ja nicht, oder?? Da fehlt mir die Erfahrung)
Andernfalls interessiert mich noch die Storage-Engine. --> InnoDB?
Delphi programming
  Mit Zitat antworten Zitat
jobo

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

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 10:28
@jobo: du musst bestimmt nicht deswegen aus der Kirche austreten, hier läuft bestimmt was Anderes schief ...
Wenn ich es mir genau überlege, ist es hier wie überall die Frage, kämpfe ich innerhalb des Systems um Verbesserungen oder such ich mir was besseres.
Bei mysql war ich zum Glück noch nie gezwungen, es produktiv zu verwenden.
Gruß, Jo
  Mit Zitat antworten Zitat
JRichmann

Registriert seit: 8. Dez 2009
Ort: Pattensen
57 Beiträge
 
Delphi XE5 Architect
 
#18

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 11:11
Hallo...

>Hat denn jeder Thread auch seine eigene Connection?

Ja

Die DB kann ich leider nicht so einfach wechseln
Jörg Richmann
  Mit Zitat antworten Zitat
JRichmann

Registriert seit: 8. Dez 2009
Ort: Pattensen
57 Beiträge
 
Delphi XE5 Architect
 
#19

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 11:15
>Du schließt die Übergabe der ID (des PK / AI-Feldes) aus. Somit ist also MySQL gefragt. --> ok

Ja

>Sicherlich habt ihr die my.ini konfiguriert. Könnte Dir da ein Zusammenhang einfallen? (Clustern werdet ihr ja nicht, oder?? Da fehlt mir die Erfahrung)

Default Werte

>Andernfalls interessiert mich noch die Storage-Engine. --> InnoDB?

InnoDB
Jörg Richmann
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
190 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: MySQL Duplicate Entry Auto-Inc

  Alt 30. Dez 2015, 11:20
@Jobo: ich bin auch nicht wirklich ein großer Freund von mySQL (alleine ein Wechsel auf Version 5.7 von 5.6.xx brachte einen Haufen Ärger), aber des Kunden Wunsch sei mir Befehl !
Für die dortige einfache DB hätte ich weiterhin Firebird genommen (alleine schon weger der Lizenz-Problematik). Aber man wollte dort bei der Hansestadt die IT-Landschaft vereinheitlichen. Ich habe mich durchgekämpft und es läuft sehr stabil. Es sind aber auch keine riesigen Datenmengen, so dass ich zur Stabilität dahingehend nichts sagen kann und will.
Thomas Forget
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz