AUTO_INCREMENT funzt nich richtig?!

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

  • AUTO_INCREMENT funzt nich richtig?!

    hi,

    irgenwie funktioniert mein auto_increment bei einer tabelle nicht richtig. wenn ich zB den eintrag mit der ID 5 lösche und dann nur noch 4 Einträge habe, kriegt der nächste neue eintrag die ID 6.
    also intern zählt die Datenbank wohl weiter. aber ich will, dass der nächste autoindex auch jeweils "wirklich" die nächste nummer hat.
    ich benutze MySQL. wer weiss rat?

    metron

  • #2
    I think so!!

    MySQL nimmt immer den in der Spalte letzten Wert zum hochzählen. Also alle Spalten ändern oder so lassen.

    Kommentar


    • #3
      ja ich hab die schonmal alle geändert. aber der hat die nexte nummer nach dem alten stand gesetzt.

      metron

      Kommentar


      • #4
        Lösung: Dump von der Tabelle mit geänderten Indizes erstellen, Tabelle löschen, von Dump wieder einspielen.

        (Vorsichtshalber mit phpMyAdmin von der Tabelle eine Sicherheitskopie anlegen, wenn längere Texte oder Blobs drin sind!)
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Außerdem ist das Verhalten von mySQL beim quto_increment absolut korrekt. Wenn ich den 5. Datensatz gelöscht habe, ist das schon ganz gut, dass alle Referenzen darauf ungültig sind.

          Stellt euch mal dieses Szenario in einem Forum mit privaten Nachrichten vor:

          A schreibt B eine Nachricht, die bekommt beim Einfügen die ID 1. Nachricht hat schweinischen Inhalt und wird vom Administrator gelöscht.
          C schreibt an D irgendwas, was B nicht wissen soll (z.B. eine tödliche Beleidigung) oder ihn nichts angeht; auch diese Nachricht bekommt die ID 1.
          User B hat seine Übersichtsseite mit dem Link zu Nachricht 1 noch und will sich die (mittlerweile gelöschte) Nachricht anschauen, bekommt aber stattdessen die Nachricht von C an D zu sehen.
          B liest die Beleidung und ist natürlich tierisch sauer auf C; lauert ihm auf und C landet im Krankenhaus.
          A wird wegen Körperverletzung verurteilt und muß ein Jahr auf Online-Zugang verzichten, um die Forderungen bezahlen zu können. C verklagt ausserdem den Provider des Forums auf Schadenersatz in horrender Summe - wegen Verletzung der Privatsphäre. Provider muss Konkurs anmelden, Administrator ist arbeitslos.

          Möchte einer von euch der Provider, Administrator, A oder C sein?
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            mmmmhh

            Wenn es denn sein muß, nehm ich den Administrator, und such mir nen neuen Job.

            Kommentar


            • #7
              Hast Du es nach dem Löschen schon mal mit einem "OPTIMIZE TABLE [tabellenname]" versucht. Mit diesem Befehl werden die nicht mehr vorhandenen Einträge freigegeben. Sag mal bescheid, ob es damit funktioniert.

              Kommentar


              • #8
                Dieses Verhalten legt MySQL nur an den Tag, wenn die Tabelle als MyIsam deklariert wird.
                [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                Kommentar

                Lädt...
                X