Ankündigung

Einklappen
Keine Ankündigung bisher.

ID Auto_Increment & Primary_Key

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ID Auto_Increment & Primary_Key

    Hallo,
    ich habe in einer Tabelle eine ID (Auto_Increment & Primary_Key).
    Die vorletzte ID ist 1816919. Die darauf folgende ist die 2147483647. Wie bekomme ich das jetzt, das die nächste ID bei 1816920 liegt, ohne eine neue Tabelle zu machen?

    Vielen Dank

  • #2
    Gar nicht. Der Auto-Increment kann nicht niedriger als der höchste Key sein.

    Kommentar


    • #3
      Aber wieso ist der Wert auf einmal so hoch? Ich habe zwischendrin keine zig Millionen Einträge getätigt

      Kommentar


      • #4
        Zitat von Crazynet Beitrag anzeigen
        Aber wieso ist der Wert auf einmal so hoch? Ich habe zwischendrin keine zig Millionen Einträge getätigt
        Wer oder was hat den Datensatz erstellt?

        Kommentar


        • #5
          Den letzten ich... Den davor ein Mitarbeiter

          Kommentar


          • #6
            Zitat von Crazynet Beitrag anzeigen
            Den letzten ich... Den davor ein Mitarbeiter
            Dann solltest du den mal fragen. Irgendwer hat jedenfalls dafür gesorgt, dass der Auto-Increment erhöht wird.

            Kommentar


            • #7
              Habe mir überlegt, das ich die ID Spalte lösche und dann eine neue anlege. Müsste der Wert dann nicht automatisch neu generiert werden? Brauche den Wert im Grund momentan nicht, da ich nach dem Timestamp sortiere

              Kommentar


              • #8
                Ist deine Anwendung denn auch ausreichend gegen Angriffe von aussen gesichert?
                Prüfst du die eingehenden Parameter auf Länge, Typ und zulässige Zeichen, oder lässt du das Einfallstor sperrangelweit offen?

                Kommentar


                • #9
                  Autoincrement sagt leider nichts über den Datentyp, sondern nur über das Verhalten.
                  Was ist es für ein Typ? Wenn man den Typ auf (unsigned) bigint ändert, sollten noch mehr als genug Werte verfügbar sein.
                  Das könnte natürlich Problem mit den korrespondierenden Typen in der Anwendung geben.

                  Ansonsten:
                  Jedes auch fehlerhafte Statement ruft bei einer Auto ID Spalte einen neuen Wert ab, egal ob am Ende gespeichert wird. Wenn man also genug kaputte Anweisungen gegen die Tabelle laufen lässt, ist der Wertebereich irgendwann erschöpft, ohne das ein einziger neuer Datensatz hinzugekommen ist. Dafür genügt im Zweifel ein einziges, falsch angelegtes Insert Statement, das sich seine Werte über ein Select mit fehlerhaftem Join holt. Die Anwendung reagiert nicht mehr, man "schießt sie ab", der Server ackert weiter, bis ans Limit.

                  Was auch helfen könnte:
                  alter table mytable auto_increment = <givenValue>
                  <givenValue>=DeinWunschWert
                  Dann solltest Du den Schrottdatensatz aber noch rausoperieren (vorher oder nachher)..

                  AnsonstenAnsonsten:
                  Eine Datenbank bzw. das Modell und die Logik sollten nicht auf fortlaufende ID angewiesen sein.
                  Wer das braucht, weil er sich für die innere Ästhetik einer Tabelle erwärmt, sollte lieber Schraubenregale hübsch machen bei Obi.

                  Wer sein Modell oder die Logik so konstruiert hat, dass es eingehalten werden muss, hat ein anderes Problem. Eine solche Konstruktion ist falsch und nur mühsam aufrecht zu erhalten. Niemand braucht lückenlose, aufsteigende, technische ID, nicht mal das Finanzamt, auch nicht in Singapur.

                  Kommentar


                  • #10
                    @Perry Staltic
                    Leider habe ich das Prob, das Insert's auf die Tabelle nicht mehr funktionieren.

                    Kommentar


                    • #11
                      Habe jetzt die Spalte gelöscht und neu hinzugefügt.
                      Trotzdem danke für eure Hilfen

                      Kommentar


                      • #12
                        Du solltest die Ursache beheben, nicht die Symptome, sonst bist du bald wieder in der gleichen Situation.

                        Kommentar


                        • #13
                          Zitat von Crazynet Beitrag anzeigen
                          Aber wieso ist der Wert auf einmal so hoch? Ich habe zwischendrin keine zig Millionen Einträge getätigt
                          Es reicht zum Beispiel einige Einträge aus Versehen zuzufügen und dann wieder zu löschen, um den Auto-Increment hochzusetzen.
                          Um den Auto-Increment für ein solchen Fall für MySQL wieder zu richten reicht ein
                          ALTER TABLE mytable AUTO_INCREMENT=0;

                          Kommentar


                          • #14
                            Ja, davon war mehr oder weniger auszugehen. Das war ja wohl der Anlass, hier zu posten. Hast Du irgendwas von meinen Zelen nachvollzogen oder wenigstens versucht nachzuvollziehen?
                            Ich gehe nicht davon aus, dass Du Dich dem Gedanken hingibst, die Tipps hier im Forum würden auf magische Weise Deine Tabelle reparieren.

                            Kommentar


                            • #15
                              Nur zur Info: Du kannst auch in einer Auto-Increment-Spalte den Wert manuell setzen. Vielleicht hat das zu Deinem unerwarteten Wert geführt.

                              Kommentar

                              Lädt...
                              X