• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

auto_increment mysql

Bieber

New member
ich hab auch mal wieder ne Frage auf die ich leider keine Antwort finden konnte...

und zwar geht es darum, dass ich eine Tabellenindex mit auto_increment erhöhe, nach meiner Schätzung wird die Tabelle ca. 300.000 Einträge haben... sollte ja soweit kein Problem sein

Aber, ich erwarte täglich bis zu 1,5 Mio Änderungen, soll heißen, ein alter Eintrag wird gelöscht, ein neuer entsteht, dabei wird der Primäschlüssel ja immer weiter gezählt(auto_increment)

Nun meine Frage: wenn ich z.B. INT(6) verwende und der auto_increment-Wert bei 999.999 liegt, was passiert mit dem nächsten Wert? sucht er sich einen freien Wert oder knallt es dann an dieser Stelle? Wenn ja, wie kann ich dem entgegen wirken?

Habe leider keine Ahnung wo ich das Problem suchen soll... bei sun gibts zwar infos zu auto_increment, aber zu meinem "Problem" steht da nichts

ich habe auch mal einen Test gemacht, indem ich die auto_increment-Spalte mit INT(1) angelegt habe... beim zehnten Eintrag hatt er dann einfach ne 10 geschrieben obwohl eigentlich nur eine Zahl möglich sein sollte... jetzt bin ich völlig verwirrt^^ nach dem löschen eines eintrags, hat er auch weiter nummeriert, also nicht die lücke gewählt

kann mir jm. helfen?
 
d-oh
ich hatte es noch nie mit den bits und bytes^^, danke für die Aufklärung, aber mein Problem bleibt ja trotzdem bestehen... werde es gleich mal mit tinyint testen.... mal schauen was passiert

edit:
#1062 - Duplicate entry '127' for key 1, trotz löschen eines anderen keys, mist...
mhh... also wenn ich für meine ai-Spalte bigint nehmen, und nur positive Zahlen zu lasse, habe ich ja ne ganze weile ausgesorgt... aber irgendwann wird auch da ein Ende kommen, gibt es da irgendeinen Trick? oder ne andere Vorgehensweise, wie man diesem Problem entgegen wirken kann?
 
Zuletzt bearbeitet:
geht leider nicht, da das Löschen nicht zwangsläufig einen neuen Eintrag nach sich zieht

aber ich habe gerade nochmal gerechnet... bigint wird nicht volllaufen^^
selbst wenn ich nicht unsigned verwende(was bei bigint auch nicht empfohlen wird, ka wieso^^...vielleicht einfach zu große zahlen)

selbst bei 1,5mio Änderungen am Tag würde bigint über 100Jahre reichen, und so lange besteht eh keine DB^^

hinzu kommt, dass meine 1,5mio Änderungen am Tag viel zu hoch gegriffen waren, sind nur 15.000... hatte da nen denkfehler :icon6:, ich glaub bei 1,5mio wäre mysql auch nicht mehr die geeignete Lösung :D

danke für die Hilfe
 
btw: Auf den meisten Systemen führt ein Zu-gross-Werden eines Integers zur Erhöhung von der unteren Grenze des Zahlentyps. Heisst bei einem 32bit signed integer würde ein Wert über 2.147.483.648 an der Untergrenze −2.147.483.648 weitergezählt werden (afaik).
2.147.483.650 würde einem Integer des erwähnten Datentyps zugewiesen eine −2.147.483.646 ergeben.
 
Beim Autoincrement von MySql wird dagegen ein 'duplicate entry' Fehler angezeigt wenn der Wertebereich überschritten wird (wie Bieber ja bereits festgestellt hat).
 
Hm, beim Testen hat sich ergeben, dass mySQL dann einfach an der oberen Grenze nicht mehr inkrementiert, das SQL-Statement aber trotzdem versucht auszuführen. Heisst mit einem Feld das als tinyint formatiert ist (Obergrenze bei 127) wird versucht den Datensatz mit dem Wert 127 im auto_increment Feld hinzuzufügen, sollte die letzte ID bereits an der Obergrenze sein. Das führt dann auch zu einem "Duplicate Entry"-Fehler.
 
Zurück
Oben