duplicate entry primary key

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

duplicate entry primary key

Postby Teli.22 » 07. January 2014 21:49

hallo Leute,

ich habe seit längerem eine Webseite mit einer Datenbank Anbindung.
die Seite lief problemlos 3 Jahre danach musste ich das System neu aufsetzen.
Seitdem habe ich das Problem mit dem duplicate entry primary key (hier die Zahl die immer unterschiedlich ist).
Der Fehler erscheint ab und an mal , sobald ein Eintrag in der Datenbank gemacht wird (insert into).

ich habe mehrere Tabellen mit jeweils ein primary key und autoincrement .

am Anfang dachte ich mir das Problem liegt am bigint weil ich den Befehl mysql_insert_id benutzt habe und das soll angeblich nicht sehr gut funktionieren und seit dem benutze ich last insert id () und den wert int statt bigint in der Datenbank .

kennt jemand dieses Problem ?
wäre um eine Lösung sehr dankbar

MfG Teli
Teli.22
 
Posts: 4
Joined: 07. January 2014 21:34
Operating System: XP

Re: duplicate entry primary key

Postby Nobbie » 08. January 2014 10:47

Das ist ein logischer Fehler in deiner Anwendung, das kann hier keiner finden. Du musst die Anwendung debuggen, offensichtlich wird ein Datensatz neu eingefügt, wo die "id" (oder wie auch immer der Primary Key heißt) mit einem Wert vorbelegt ist (was nicht empfohlen wird bei Neueinfügen), der schon vorhanden ist.

Wenn man neue Datensätzen anlegt, sollte man den Primary Key nicht(!) mit dem Programm besetzen, sondern keinen Wert (bzw. den Wert 0) angeben und in der Tabellendefinition dafür die Option "Autoincrement" angeben, dann vergibt MySQL automatisch den richtigen nächsten freien Wert.

Es könnte auch durch das Einspielen eines Backups passiert sein, dass ein Datensatz mit einem Primary Key eingespielt wurde, ohne dass der interne Zähler den richtig mitgezählt hat, das ist auch eine typische Fehlerursache. Aber ohne jede Kenntnis darüber, was das überhaupt für eine Software ist, wie die Tabellen aussehen, wie der konkrete insert aussieht, ist es vollkommen unmöglich, hier etwas genaueres zu sagen.

Was Du mit mysql_insert_id meinst, erschließt sich mir nicht. Sollte es so sein, dass Du diese Funktion benutzt, um den Wert des zuletzt eingefügten Primary Keys herauszufinden um dann selbst im Programm einen neuen Primary Key auszurechnen - dann ist das genau die Fehlerursache, wie oben schon beschrieben ist. Primary Keys darf man nicht selbst berechnen oder per Programm ermitteln, die müssen von der Datenbank automatisch vergeben werden. In einer Multiuserumgebung kann es durchaus passieren, dass mehrere Anwender so knapp hintereinander denselben Code ausführen (in einem Forum zu Beispiel), dass sie beide denselben Primary Key berechnen und der zweite insert geht dann in die Hose. Das ist jetzt allerdings schon wild geraten.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: duplicate entry primary key

Postby Ghafoer86 » 08. February 2014 10:31

i don't understand about your's conversation. But, i just only know, if the database design with correct, offcourse there is nothing primary key redundant/duplicate.
Never Stop Learning. Make Different's Style. Leading The Innovation.
User avatar
Ghafoer86
 
Posts: 22
Joined: 12. August 2013 17:39
Location: Indonesia - southeast ASIA (City : Palu Province : Central Sulawesi)
XAMPP version: online
Operating System: Android


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 8 guests