.titleBar { margin-bottom: 5px!important; }

cdr-Felder: start, answer und end nicht in der MySQL

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von chebrise, 14 Dez. 2008.

  1. chebrise

    chebrise Neuer User

    Registriert seit:
    25 Juli 2006
    Beiträge:
    69
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    58 Hagen
    hallo Forum,

    bei mir läuft Asterisk 1.4.21
    der CDR wird erfolgreich in die MySQL Tabelle geschrieben, nur dass drei Felder fehlen.
    Die Felder start, answer und end werden nicht in die DB geschrieben obwohl sie in der /var/log/asterisk/cdr-csv/Master.csv aufgeführt sind.

    Was kann ich dagegen tuen?

    Das Feld calldate ist vom Typ DATETIME, also Date und TIME oder DATETIME!?!?
    Muss ich einfach an der richtigen Stelle Felder zu der MySQL Tabelle zufügen, wenn ja welchen Typ müssen die haben (DATE, Time oder DATETIME)?

    Und die Master CSV hat auch eine völlig andere Reihenfolge als die Daten in der MySQL, haben die überhaupt etwas miteinander zu tuen?

    Was kann ich tuen damit alles was in die /var/log/asterisk/cdr-csv/Master.csv rein kommt auch in die MySQL Tabelle rein kommt???
     
  2. chebrise

    chebrise Neuer User

    Registriert seit:
    25 Juli 2006
    Beiträge:
    69
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    58 Hagen
    ok, ich bin zumindest der Antwort ein wenig näher gekommen.
    In der cdr_addon_mysql.c steht natürlich nichts von Feldern wie start, answer und stop. Gefunden habe ich da z.B. folgende Zeilen:
    Code:
    #ifdef MYSQL_LOGUNIQUEID
    		sprintf(sqlcmd, "INSERT INTO %s (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid,userfield) VALUES ('%s','%s','%s','%s','%s', '%s','%s','%s','%s',%i,%i,'%s',%i,'%s','%s','%s')", dbtable, timestr, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, cdr->duration, cdr->billsec, ast_cdr_disp2str(cdr->disposition), cdr->amaflags, accountcode, uniqueid, userfielddata);
    #else
    		sprintf(sqlcmd, "INSERT INTO %s (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,userfield) VALUES ('%s','%s','%s','%s','%s', '%s','%s','%s','%s',%i,%i,'%s',%i,'%s','%s')", dbtable, timestr, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, cdr->duration, cdr->billsec, ast_cdr_disp2str(cdr->disposition), cdr->amaflags, accountcode, userfielddata);
    #endif
    da sieht man deutlich, warum die uniqueid auch in die MySQL Tabelle kommt wenn man sie laut voip-info.org in dieser Datei am Anfang definiert.
    Stellt sich jetzt die Frage ob ich die fehlenden drei einfach dazu schreiben kann... ich glaube nein, obwohl Glaube in die Kirche gehört... aber beim Überfliegen des Codes sehe ich öfters diverse Felder wiederholt auftauchen. Also ist es wahrscheinlich nicht damit erledigt wenn man nur die oben gezeigten Zeilen editiert.

    Wenn mir damit jemand helfen könnte wäre das super.
    Ich spreche nicht fließend C aber verstehe doch wenn jemand mit mir C reden möchte.

    Ich kann doch nicht der einzige sein der besagte Felder in der MySQL haben möchte. Google bringt mir außer jemandem mit dem gleichen Problem keine Lösung :(
    Oder ist es einfacher als ich dachte?