MYSQL Tabelle ändern.

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
MDuss
Mitglied
Beiträge: 216
Registriert: 06.02.2008 10:21

MYSQL Tabelle ändern.

Beitrag von MDuss » 29.12.2009 09:51

Hi Leute.

Ich habe da eine kleine Frage.
Ich habe in einer SQL Datenbank eine Tabelle um Downloads zu verwalten. Ich benutze im Forum ein Downloaddatenbank System.

Die Download selbst werden über eine eindeutige ID in der Datenbank angesprochen.
Die ID istwie folgt definiert:
Feld: ID
Typ: int(11)
Null: Nein
Extra: auto_increment

Jetzt zu meiner Frage.

Ich hatte am Schluss bei zwei Downloads einen kleinen Fehler gemacht und diese wieder gelöscht.
Danach hatte ich diese korrigiert eingefügt. Und dabei habe ich gesehen, dass die ID jetzt eine Lücke hatt.

Vorher war das so:
ID 1130 Download xyz
ID 1131 Download xdf
ID 1132 Download dfew

Jetzt sieht es wie folgt aus:
ID 1130 Download xvy
ID 1133 Download xdf (korrigiert)
ID 1134 Download dfew (korrigiert)

Ich habe also in der ID Liste eine kleine Lücke. Das ganze funktioniert, sieht aber für mich leider nicht so schön aus.
Was kann oder muss ich machen, damit der ID Wert beim löschen eines Eintrages am Schluss die Lücke berücksichtig, und beim Einfügen eines neuen Downloads wie in diesem Fall nicht mit der ID Nummer 1133 weiterzählt, sondern mit der ID Nummer 1131 wieder weitermacht.
Kann ich irgendwo von Hand in der Tabelle eingreifen?
Denn irgendwo muss der Wert. mit dem die ID Zählt doch zusätzlich gespeichert sein. Denn woher soll der Zähler denn Wissen, mit welcher Zahl er als nächstes weiterzählen soll.
Denn die vorhandene höchste ID Nummer scheint diese Funktion hier nicht abzufragen, da ja ansonsten die ID gleich wieder die korrekte Nummer 1131 benutzt hätte. Also muss für den Wert ID irgendwo die Zahl 1132 (aus dem oberen Beispiel) gespeichert worden sein.

Der Downloadmod ist dieser hier:
http://www.phpbb.de/moddb/download_mod

Wie gesagt, bin ich mit diesem Mod mehr als zufrieden. Er hat mir schon so manches mit Downloadverwaltung erleichtert.
Nur halt die Zählweise dieser ID würde ich gerne korrigieren, bzw. von Hand nachträglich heruntersetzen können, so dass ich denZähler wieder mit dem richtigen Wert weiterzählen lassen kann.
Aus dem oberen Beispiel halt statt mit der ID 1133 mit der korrekten ID 1131.

Ich kann zwar den ID Wert von Hand korrigieren, also aus der 1133 eine 1131 und aus der 1134 eine 1132 machen, und das ganze funktioniert vom Mod her immer noch korrekt, aber wenn ich dann einen neuen Download einfüge, dann erhält dieser die ID 1135 anstatt 1133. Also aus irgend einen Grund wird der bisher höchste Wert der ID nicht abgefragt. Daher meine Vermutung das irgendwo ein zusätzlicher Wert für die ID gespeichert sein muss. Wenn einer von euch mal einen Blick in die mOd mit der DAtenabnkstrucktur werfen könnte, oder mir sagen könnte, wo ich ansetzen muss, wäre mir das eine sehr große Hilfe.

MfG
MDuss

Benutzeravatar
Mahony
Ehemaliger
Beiträge: 11998
Registriert: 17.11.2005 22:33
Wohnort: Esslingen (Neckar)
Kontaktdaten:

Re: MYSQL Tabelle ändern.

Beitrag von Mahony » 29.12.2009 13:21

Hallo
Da wirst du nichts machen können. Die Spalte verwendet auto_increment .
auto_increment nimmt immer den höchsten Wert+1, "Lücken" werden nicht aufgefüllt.
Der Grund warum 'autoincrement' (es steckt ja schon im Namen) keine Lücken schließt liegt einfach in der möglichen Referenzierung. Insbesondere, da MySQL keine referenzielle Integrität behandelt, kann er nicht einfach anfangen und 'verbrauchte IDs' neu vergeben. Denn MySQL weiß ja nicht, welche anderen Datensätze evtl noch an diese ID gebunden sind.

Was stört dich übrigens, wie die Einträge in der Datenbank aussehen? Die Hauptsache sollte doch wohl sein, dass der MOD so funktioniert wie er soll.

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.

MDuss
Mitglied
Beiträge: 216
Registriert: 06.02.2008 10:21

Re: MYSQL Tabelle ändern.

Beitrag von MDuss » 29.12.2009 19:51

Das ganze stört mich in so weit, weil ich die Verzeichnisse für die Vorschaubilder anders organisiert habe als der Modautor sich das gedacht hat.
Dadurch muss ich in der Datenbank immer einen speziellen Eintrag von Hand nachbearbeiten.

Damit ich dann den Eintrag schnell finden kann, springe ich Position in der Übersicht direkt an.

Aber: Im Forum selbst bekomme ich z.B. für einen Download die ID 1130 Angezeigt. Durch einige Lücken hat dieser Eintrag in der Datenbank aber die Position 1125. Weshalb ich manchmal auf verkehrte Einträge springe, da ich manchmal vergesse, die Lücken bei der Positionsbestimmung von der ID Abzuziehen.

Daher dachte ich, dass es irgendwo in der Datenbank einen Referenzwert geben muss, damit die Tabelle weiß, welchen Wert sie als nächstes verwenden soll.
Denn woher weiß sie z.B. in zwei Tagen, dass die letzte vergebene ID als beispiel 1130 war. Ich dachte zuerst, dass SQL kurz über die Tabelle schaut, und nachschaut welche Zahl der höchste Eintrag hat und dann einfach +1 dazuaddiert. Dann wäre die nachträgliche Korrektur ja einfach gewesen. Die Lücken von Hand schließen und SQL sieht beim nächsten mal halt eine niedrigere Zahl und zählt dann auf diese +1 dazu.

Aber so. Na ja. Ich weiß ja nicht, wie hoch solche Zahlen gehen können, bzw. wie hoch max. gezählt werden kann, deshalb möchte ich halt Lücken in der Datenbank vermeiden.

MfG
MDuss

Antworten

Zurück zu „phpBB 2.0: Mod Support“