norman: nach inserts -> server has done away

hallo!

ich hab da leider ein problem mit inserts.

INSERT IGNORE INTO tabelle (spalte) VALUES ('A')

die tabellenstruktur sieht so aus:

id (auto_incr, PRIMARY KEY) | spalte (VARCHAR, INDEX UNIQUE)

die inserts werden sehr schnell durch ein script in die db geblasen. ich prüfe aus performancegründen nicht ständig ob es den spaltenwert schon gibt, sondern nutze IGNORE.

nach ca. zehn inserts gibt mysql auf: server has done away.
vielleicht "verträgt" der mysql die vielen inserts auf einmal nicht... (zusammenfassen der inserts ist aber nicht möglich)

hat jemand eine idee?

gruß,
norman

  1. hi,

    die inserts werden sehr schnell durch ein script in die db geblasen. ich prüfe aus performancegründen nicht ständig ob es den spaltenwert schon gibt, sondern nutze IGNORE.

    nach ca. zehn inserts gibt mysql auf: server has done away.
    vielleicht "verträgt" der mysql die vielen inserts auf einmal nicht... (zusammenfassen der inserts ist aber nicht möglich)

    schon mal versucht, mit INSERT DELAYED zu arbeiten?
    http://www.mysql.com/doc/de/INSERT_DELAYED.html

    (k.A. ob's hier hilft, schuss ins blaue ...)

    gruss,
    wahsaga

    1. hi wahsaga,

      habs schon mit delayed ausprobiert, funkt leider auch nicht.

      dann hab ichs mit ner verzögerung nach jedem insert probiert:
      for my $i (0..10000) {}, funkt leider auch nicht. irgend wie gehts nicht mehr weiter :-(

      gruß
      normAN

  2. Halihallo norman

    die inserts werden sehr schnell durch ein script in die db geblasen. ich prüfe aus performancegründen nicht ständig ob es den spaltenwert schon gibt, sondern nutze IGNORE.

    http://www.mysql.com/doc/en/REPLACE.html ist in den meisten
    Fällen die "sicherere" Variante, jedoch müsstest du dann spalte
    als PRIMARY KEY definieren. Sicherer deshalb, da auch bei
    existierendem Primary Key die Daten gespeichert werden und der
    Vorgang nicht einfach abgebrochen wird. Aber wenn du wirklich nur
    "spalte" ändern möchtest, ist INSERT IGNORE natürlich vorzuziehen.

    nach ca. zehn inserts gibt mysql auf: server has done away.
    vielleicht "verträgt" der mysql die vielen inserts auf einmal nicht... (zusammenfassen der inserts ist aber nicht möglich)

    Dein MySQL-Server scheint nicht wirklich stabil zu sein... Nach
    10 INSERT's einfach die Karotten von unten ansehen...

    http://www.mysql.com/doc/en/INSERT.html

    =>

    INSERT IGNORE INTO table (spalte) VALUES
       ('A'),
       ('B'),
       ...

    So wird nur noch ein Statement über die Verbindung gesendet und
    ggf. kommt der Server damit besser zu rande und wird nicht
    überfordert...
    GGF. Die korrekte Verarbeitung a) über Fehlerbehandlung und b)
    http://www.php.net/mysql_affected_rows überprüfen.

    Viele Grüsse

    Philipp

    1. hi hi,

      mit "replace" oder "replace delayed" sagt der server auch tschüss - verdammtes mistteil!!! (sorry)

      scheinbar läuft das ding unstabil (win xp sp1, mysql4.1.1a alpha, perl 5.6).

      bei www.mysql.de kann ich verschiedene mysql-4.1.1 versionen downloaden:

      -Windows 95/98/NT/2000/XP/2003 (x86)  4.1.1a-alpha (hab die hier installiert)

      -Windows Source (zip)  4.1.1a-alpha 18,9M

      -Windows Source (zip)  Standard 4.1.1a-alpha 17,1M

      laufen die anderen evtl. versionen stabiler? brauch ich da nen c-compiler für, wegen "Source" und so?

      gruß
      norman

      1. Moin!

        scheinbar läuft das ding unstabil (win xp sp1, mysql4.1.1a alpha, perl 5.6).

        HAAAAAAHAHAHAHAHA! Alpha-Version! Das sind die Dinger, die man testweise mal an Entwickler verteilt, damit die die tatsächlich vorhandenen BUGS rausfinden und beseitigen.

        Wenn du eine Datenbank zu mehr als zum Testen einsetzen willst, nimm niemals Alpha- oder Betaversionen, sondern Final Releases!

        bei www.mysql.de kann ich verschiedene mysql-4.1.1 versionen downloaden:

        Du willst keine Alpha-Version. Du willst eine stabile Version.

        Also 4.0. Für Windows gibts da auf der Downloadseite nur eine einzige Version 4.0.18. Ob du nun mit Installationsprogramm haben willst, oder ohne, sei dir überlassen.

        - Sven Rautenberg

        --
        "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
        1. HAAAAAAHAHAHAHAHA! Alpha-Version! Das sind die Dinger, die man testweise mal an Entwickler verteilt, damit die die tatsächlich vorhandenen BUGS rausfinden und beseitigen.

          da hast du recht! unter linux läuft die diese verion stabil. ist wohl ein auf windows beschränktes prob. also: warten auf die 4.1.2 alpha ;-)

          ps: schönes zitat von kant!