Oliver Lehmann: SQL Befehl zu lang?

Hi,

ich versuche ein INSERT, aber das was eingefuegt werdne soll ist 3 MB
gross, scheinbar zu gross fuer MySQL?

webserv# mysql mp3 < 1.sql
ERROR 2006 at line 1: MySQL server has gone away
webserv#

er werkelt ne ganze weile (cpu auslastung des prozesses ueber 50% ;-)
und dann gibt er das aus.Ich werde jetzt mal die 1.sql nicht posten ;-)
Daher meine frage(n). Die Sonderzeichen wurden vorher mit der php fkt.
addslashes() eigentlich "unschaedlich" gemacht...

a) gibt es eine beschraenkung wie lang der insert string sein darf?

b) kann ich nicht eine datei "inserten" also, das sich mysql alleine den
inhalt der datei hohlt und den einfuegt, und ich nur den pfad uebergebe?
was ich eigentlich will, ist meine mp3's in die db packen ;-)

MfG Olli

  1. Hi,

    also *g* a) kann ich mir selber beantworten. Ja, es besteht eine begrenzung die default maessig auf 1 MB festgelegt ist. diese kann man aber selber definieren, indem man beim server aufruf

    -O max_allowed_packet=RICHTIG-GROSSE-ZAHL

    hinzufuegt.
    so, ich hoere jetzt songs aus meiner db *g* einziges problem sind noch die etwas laenge pausen zw. den songs (jaja, ein p133 liefert nunmal nicht so schnell 3 mb aus der db, aber die 3 oder 4 secs halt eich auch noch aus ;-)

    wie kann man eigentlich feststellen, wie lange der rechner zur bearbeitung des query braucht?

    nun wuesste ich aber trozdem noch gerne b)

    Mit super freundlichen und uebergluecklichen Gruessen

    Olli

    1. Hi,

      wie kann man eigentlich feststellen, wie lange der rechner zur bearbeitung des query braucht?

      ich habe das jetzt so gemacht:

      <?
      $link = mysql_connect("localhost","root");
      $db = mysql_select_db("mp3");
      $sql = "SELECT song FROM files WHERE ID=$id";
      $a = microtime();
      $result = mysql_query($sql,$link);
      $b = microtime();
      $c= explode(" ",$a);
      $d= explode(" ",$b);
      echo  ($d[0]-$c[0])+($d[1]-$c[1]);
      list($song) = mysql_fetch_array($result);
      //echo $song;
      ?>

      aber geht das nciht auch genauer? also wie lange SQL dafuer braucht... (nen 3 MB song braucht ca 1 sec) weil, ich kann mir nicht so recht vorstellend as es die zeit ist die mysql braucht, oder?

      MfG Olli

  2. Hi!

    Ich kann dir zwar nicht wirklich weiterhelfen, aber:

    Warum möchtest Du binäre Daten (zB MP3-Files) in einer DB ablegen.
    Wenn Du das ganze in einem Verzeichnis speicherst und nur den Pfad dazu in der DB angiebst, sparst Du Dir viel Kopfschmerzen und Aufwand.

    Grüße
      fredy

    1. Hi Fredy,

      du magst evtl. recht haben, aber ich will mal wissen was
      MySQL sagt wenn da 700-800 MB Daten drinne sind (obs dann
      ueberhaupt noch was sagt. oder ob die ueberlastet ist), auserdem
      will ich keine hundert files in ne verz. rumliegen haben ;-)
      DB ist "cooler" ;-) auserdem lernt man auch noch gleich was
      nebenbei.

      MfG Olli