Wie erhält MySQL auto_increment int's?

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

  • Wie erhält MySQL auto_increment int's?

    Problem:
    userid int(11) NOT NULL auto_increment
    Das ist die Spalte, wenn sich nun der erste user einträgt erhält er die ID 1, wenn sich nun aber ein weiterer einträgt erhält die ID 2147483647 (maximum). Wie kann ich das verhindern? Wenn sich nämlich jetzt noch ein weiterer User einträgt erscheint der Fehler, das die ID doch schon da wär (logisch, geht ja nicht mehr höher). Wieso springt MySQL nun von 1 auf 2147483647?

    PS: Ich habe auch noch einen default-user mit der UserID -1 in der Datenbank.
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

  • #2
    Das muss ein Fehler sein - logischerweise kommt nach 1 die 2.
    Hattest du schon Datensätze in deiner Tabelle und hast die gelöscht? oder was hast du sonst mit der Tabelle angestellt?
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      Hm, nein, da waren keine anderen Datensätze in der DB, eben nur der eine Default-User und die 1 (das wär dann ich).
      Die Spalte mit der UserID war aber nicht immer signed (also mal unsigned), allerdings tritt der Fehler auch auf dem Production-Server auf und der weiß ja nichts davon, dass die Spalte mal unsigned war, da ichs durch 'nen SQL-Dump auf den Server gebracht hab.
      "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

      Kommentar


      • #4
        da du noch einen User mit der ID "-1" hast, dürfte das ganze logisch sein!

        Erklärung:

        - dein Feld ist unsigned, geht also von 0 bis 2147483647
        - du hast ein User mit ID 1 => OK
        - du hast ein User mit ID -1 => NICHT OK !

        die -1 wird bei unsigned Feldern zu Maximum-1 !!!

        dh. als nächstes wird dann logischerweise die ID
        Maximum (2147483647) vergeben, und dann ist Ruhe im Schacht.

        nimm den User -1 raus, exportiere die Daten, und lege die Tab neu an,
        damit er den Autoincrement zurücksetzt.
        Dann kannste deine User wieder importieren, OHNE -1 !
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Die Spalte ist aber nicht unsigned. Sie ist signed.
          "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

          Kommentar


          • #6
            autoincrement Spalten sind nie negativ (auch wenn du negative Werte selber eintragen kannst)

            autoincrement startet immer bei 1, und nicht bei -2147483647

            probier es mal aus !

            PS: in meinen Projekten hat der "Gast" immer die ID 1, dann gibs keine Probleme mit der autoincrement Spalte
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Aber 0 ist doch OK, oder? Dann probier ich das mal.
              "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

              Kommentar


              • #8
                mit 0 hatte ich auch probleme
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  Jo, ich jetzt auch. :/
                  Naja, der Default-User hat jetzt die 1, die Spalte ist unsigned. Jetzt funzt alles.
                  Danke für die Hilfe.
                  "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                  Kommentar


                  • #10
                    Ich glaub ich halluziniere...jetzt kommt doch glatt wieder der selbe scheiß raus. Nur jetzt ergibst das 4294967295 (logisch, ist ja jetzt unsigned).
                    Noch 'ne Idee?
                    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                    Kommentar


                    • #11
                      wie sieht denn dein insert Quellcode aus?
                      vielleicht ist ja da nen Fehler.

                      Ansonsten haste die Tabelle mal richtig gedropt, und neu angelegt ?
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        Die Query sieht wie folgt aus:
                        PHP-Code:
                        $sql "INSERT INTO ph_user 
                        (name,usergroup,registered,pass,email,timeformat)
                        VALUES
                        ('"
                        .$_POST['username']."',".USER_REGISTERED.",$timenow,md5('".$_POST['password']."'),'".$_POST['email']."','$timeformat')";
                        $dba->query($sql); 
                        Die $_POST-Vars wurden alle vorher überprüft.
                        "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                        Kommentar


                        • #13
                          sieht OK aus,

                          haste die Tabelle mal gedropt, und komplett neu angelegt ?
                          Tritt dann das Problem auch auf ?

                          andere Idee:
                          - leg die Tabelle mal neu an, oder eine äquivalente
                          - packe deinen Standarduser rein, und registriere den ersten User (der ja noch geht)
                          - danach frage mal ab, zB mit phpMyAdmin was die nächste zu vergebene AutoID der Tabelle ist
                          TBT

                          Die zwei wichtigsten Regeln für eine berufliche Karriere:
                          1. Verrate niemals alles was du weißt!


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • #14
                            Oki, hab' jetzt die Tabelle gedroppt und neu angelegt. Funzt jetzt. Ist aber schon komisch, oder?
                            Egal, Danke für die Hilfe.
                            "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                            Kommentar

                            Lädt...
                            X