(Indirektes) Load Data Infile Problem

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

  • (Indirektes) Load Data Infile Problem

    Folgendes Probleme:

    1.) Ich habe eine MySQL Tabelle, die so aussieht:

    id | a | b | c |
    ----------------

    (id steht auf auto_increment und primary_key.)

    Dann hab ich noch ne Textfile in der Werte für
    a,b und c drinstehen... die id soll er selber hochzählen.

    Jetzt hab ich die Textfiles mit "LOAD DATA INFILE..."
    eingefügt habe. Nun hab ich 3 Zeilen in der gesamten
    Tabelle (eben die 3 aus der Textdatei).

    Wenn ich jetzt die drei Zeilen lösche (über phpmyadmin) -
    also die Tabelle leer mache - und wieder mit
    "Load Data Infile" die Zeilen einfüge, zählt mysql bei der id
    4,5,6 obwohl es doch nur drei einträge gibt und
    es wieder auf 1,2,3 gehen sollte.!?!

    Wieso "merkt" sich MySQL die gelöschten Spalten??

    Oder anders gesagt: Wenn ich drei Einträge hab
    (id 1,2,3) und die zweite Zeile lösche, wie bekomme
    ich es dann hin das MySQL id 1,2 macht und nicht
    id 1,3??

    Mir wurde schon "Flush Table namedertabelle;" empfohlen,
    aber das tut nicht ?!?

    ------

    2.)

    Nach vielem löschen und erneutem einfügen bin ich
    jetzt bei id=30. Jetzt ist was seltsames passiert:

    ich hab nochmal 3x per "Load Data" je drei Zeilen
    eingefügt und nun zählt er mal ab und mal aufwärts...

    id
    --
    30
    29
    28
    27
    26
    25
    31
    32
    33

    Hab die Daten recht schnell nacheinander eingefügt...

    Vielen Dank schon mal für Beiträge.

  • #2
    Re: (Indirektes) Load Data Infile Problem

    Original geschrieben von Namenloser
    Wieso "merkt" sich MySQL die gelöschten Spalten??
    weil das ein auto_inc wert ist, und der IMMER WEITER gezählt wird.

    Original geschrieben von Namenloser
    Oder anders gesagt: Wenn ich drei Einträge hab
    (id 1,2,3) und die zweite Zeile lösche, wie bekomme
    ich es dann hin das MySQL id 1,2 macht und nicht
    id 1,3??
    weil du nur eine id löschst. der rest bleibt so. weil es kann ja durchaus sein, dass die daten auch in anderen tabellen anhand der id referenziert werden. und wenn du lustiges id-schieben machst, kannst du direkt ein papier nutzen, aber keine datenbank.

    Original geschrieben von Namenloser
    Nach vielem löschen und erneutem einfügen bin ich
    jetzt bei id=30. Jetzt ist was seltsames passiert:
    id 30 ist völlig ok.

    Original geschrieben von Namenloser
    ich hab nochmal 3x per "Load Data" je drei Zeilen
    eingefügt und nun zählt er mal ab und mal aufwärts...
    nein. macht er nicht. die id zählt weiterhin AUFWÄRTS.

    nur nutzt mysql freigewordene (fragmentierte) abschnitte in der tabelle und trägt es ein.

    alles ist ok so wie es ist.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      okay, dann ist ja in ordnung...

      weil du nur eine id löschst. der rest bleibt so. weil es kann ja durchaus sein, dass die daten auch in anderen tabellen anhand der id referenziert werden. und wenn du lustiges id-schieben machst, kannst du direkt ein papier nutzen, aber keine datenbank.
      hast recht. aber wenn ich jetzt mal irgendwann ausdrücklich will, dass er die freigewordenen "ids" wieder besetzt (also aus id 1,3 id 1,2 macht), damit ich wieder ne fortlaufende id hab ohne Lücken, geht das auch?

      nein. macht er nicht. die id zählt weiterhin AUFWÄRTS.
      hey, das macht ja sinn! ähnlich zu meiner Frage wegen den Lücken: Gibts da auch ein "defrag befehl" der aus 1,4,3,5,6,2 wieder 1,2,3,4,5,6 macht - also einfach nur grafisch wieder nach der id ordnet? Okay ich könnt "order by id" immer bei den querys mitaufrufen, aber das ist doch irgendwie dämlich, denn ne fragmentierte db kostet ja auch performance...

      Kommentar


      • #4
        OPTIMIZE TABLE kannst du machen. aber die ids bleiben dennoch mit lücken. und das ist auch gut so.

        das ist schliesslich der sinn einer DB.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          okay, das mit den lücken raff ich jetzt, da man
          ja sonst alles was auf id=3 verweist, ändern müsste
          da 3 jetzt 2 wäre und das ist Blödsinn.

          Aber was für einen Sinn macht es, dass die
          ID Einträge nicht der "Standard-order-by
          Eintrag" sind? Werden die Daten immer nur
          so angezeigt (Reihenfolge), wie sie eingefügt
          wurden? Dann müsste die ID aber doch fortlaufend
          sein und nicht so... ich raffs einfach nicht

          (es ist ja kein wirkliches Problem. Ich möchte nur
          MySQL in seiner Funktionweise verstehen)

          Kommentar

          Lädt...
          X