Datenbank-Logging in 2.1.29 und die ???

  1. Das DB-Logging hat einen merkwürdigen Fehler :shock:

Wenn ich eine Playliste Automatisch abspiele wird nur jeder zweite Titel geloggt. Wenn ich die Titel manuel z.B. mit “Next” starte passiert das selbe.
In der Version 2.1.28 hat das übrigens auch nicht funktioniert (gerade nochmal getestet). Was muss ich den einstellen damit ich jeden Titel der gestartet wird (ob manuel oder automatisch) in der DB habe? Habe übrigens keinen Stop-String eingefügt, da ich ja nur wissen will welcher Titel gerade läuft, und ich sonst beim Auslesen immer die Stop-Titel vor dem Start-Titel habe.

EDIT: Hab den Stop-String mit eingebaut. Jetzt bekomme ich den “NEXT CUE” immer als aktuellen Titel. Der “ON AIR” wird garnicht mehr geloggt. Sehr merkwürdig.

  1. In der Konfiguration ist unter Playlists->Playlist (n) ein Eintrag mit Fragezeichen versehen. Da fehlt doch was :wink:

Gruss

Polli

Zu 1: Muss ich mir in Ruhe angucken.

Zu 2: Da sollte zuerst die neue “nur laden, wenn kein andere Player geladen ist”-Option hin. Ich hab das nun aber doch pro Player einstellbar gemacht. Ignorier das Fragezeichen einfach, ich lösche das in der nächsten Version wieder.

Torben

Hab das ganze nochmal genau analysiert.

Wenn ich im Automationsmodus “Next” drücke wird immer ein Eintrag gemacht ausser wenn ich an der EOF-Warnung angekommen bin. Läuft die Liste automatisch weiter, wird nur jeder zweite Titel geloggt.
Stelle ich die EOF-Warnung der Player auf den Wert “0” dann wird auch nur jeder zweite Titel geloggt.
In der Konfiguration habe ich nichts gefunden was sinnigerweise dem entgegenwirken könnte. Auch verschiedene Konfigurationen bringen kein anderes Ergebnis.

Als Hilfestellung: Ich logge auf einem externen MySQL Server (5.0)

zu 2. Ok. Werd es einfach übersehen :wink:

Gruss

Polli

Mach bitte mal folgendes:

  1. Schalte auch das normale Logging (in eine Datei) ein und schau, ob dort alle Titel richtig ankommen.

  2. Überprüfe noch einmal in den Optionen der jeweiligen Player, ob überall “ins Logging einbeziehen” und vor allem “ins Datenbank-Logging einbeziehen” angekreuzt ist. Vielleicht fehlt das einfach bei deinem zweiten Player :wink:

Torben

zu 1.

Das normale Logging funktioniert einwandfrei. Hab das als Vergleich immer mitlaufen.

zu 2.

Alle notwendigen Optionen sind gesetzt. Habe alles dreimal überprüft. Merkwürdig ist zudem noch das es egal ist welcher Player startet. Wenn ich starte, egal ob Player1, 2, etc…, wird immer jeder zweite übersprungen. Der erste wird geloggt, der zweite nicht.

Gruss

Polli

Sehr merkwürdig. Ich schau mir die Routinen nochmal an, vielleicht fällt mir etwas auf.

Mailst du mir bitte einmal deine mAirList.ini sowie das Schema der Log-Tabelle (mit mysqldump erzeugt)?

OK. Mail ist raus :slight_smile:

Hm, also bei mir funktioniert das problemlos mit deiner Konfiguration. Vielleicht stört sich der Server an dem INSERT INTO?

Kannst du mal herausfinden, ob der Fehler in den alten Versionen auch auftaucht?

Ich habe übrigens für die nächste Version das Datenbank-Logging etwas überarbeitet. Mit einem Vorteil, allerdings auch mit einem Nachteil. Der Vorteil ist, dass sich mAirList nun automatisch um die Datentypen und das Setzen von Anführungszeichen etc. kümmert. Man schreibt nun also nicht mehr

INSERT INTO log VALUES('%a')

sondern

INSERT INTO log VALUES(%a)

mAirList (bzw. die verwendete ZeosLib) erkennt nun, dass es sich um einen String handelt, setzt die Anführungszeichen korrekt, und kümmert sich auch um das korrekte Escapen eventueller Anführungszeichen innerhalb des Textes. Es gibt also keine Probleme mehr bei Titeln, in denen ein Apostroph vorkommt.

Der Nachteil ist, dass man auf diese Weise (vermutlich) nur noch höchstens eine Variable pro SQL-Spalte einsetzen darf. Sowas wie

INSERT INTO log VALUES('%a - %b')

geht also nicht mehr, außer man verwendet CONCAT. Wäre das ein Problem?

Ich habe übrigens gesehen, dass du in dem SQL-String das aktuelle Datum und Uhrzeit von Hand zusammenbaust und übergibst. Das ginge dann auch nicht mehr; du kannst aber - viel besser - einfach die SQL-Funktion NOW() benutzen, die setzt die aktuelle Uhrzeit dann ein.

Wenn es keine Einwände gibt, wäre das dann ab v2.1.30 aktiv.

Torben

Hi Torben

Komisch das es bei dir funktioniert. Hast du mAirlist mit meiner INI getestet? Mal den Auto-Modus laufen lassen (ca. 5-6 Titel)? Zu einer externen DB-geloggt?

Ich habe andere Versionen getestet, und auch mit verschiedenen Windows-Versionen (W2K, XP). Habe den Fehler auch dort.

Die Funktion NOW() wird anscheinend nicht von mAirList übergeben, deswegen habe ich das Datum “manuel” eingetragen. Hatte auch erst NOW() benutzt.

Da ich mehrere Felder in der DB habe wäre es schön diese auch separat zu füllen, da ich eine Titel-Suche in die Webseite bauen möchte, in der jeder nach bestimmten Titeln, Interpreten oder Uhrzeiten suchen kann. Wir haben oft Anfragen von Hörern: “Welcher Titel lief bei euch um X:X Uhr?” oder "Habe vorhin einen Titel von “Interpret-XY” gehört, wie war der “Titel”? usw…

CONCAT hab ich noch nicht probiert. Werd ich die Tage mal testen.

Gruss

Polli

Ja, ich habe es mit (weitesgehend) deiner Config auf einem externen Server ausprobiert, auch in der Automation (aber nur mit NEXT-Klicken, nicht durchlaufen lassen).

NOW() habe ich schon mehrfach benutzt, ist kein Problem. Du solltest nur den Datentyp von TIMESTAMP auf DATETIME umstellen. Ersteres ist nämlich ein spezieller Datentyp, der MySQL veranlasst, die Zeit automatisch einzutragen, sobald du was an der Zeile änderst.

Was die Änderung angeht, hast du mich möglicherweise falsch verstanden - es wird natürlich auch in Zukunft möglich sein, mehrere Felder gleichzeitig zu beschreiben - aber nur noch mit einer Variable pro Feld, keine zusammengesetzten Ausdrücke à la ‘%a %b blabla’ mehr. Letzteres ist aber durch die Verwendung von CONCAT noch möglich.

Torben

Hi

Mit NEXT funktioniert das ja auch (Ausser wenn EOF erreicht wird glaub ich**). Nur nicht wenn ich es durchlaufen lasse.

Werd das mal mit DATETIME probieren. Danke für den Tipp. Obwohl ich dass, glaub ich, schon probiert hatte. Halte dich auf dem laufenden.

Hab dich wirklich falsch verstanden. Aber ich nutze sowieso keine Zusammengesetzten Variablen.

Gruss

Polli

** (konnte den genauen Zeitpunkt nicht definieren, da es anscheinend egal ist ob EOF einen Wert >= 0 hat. Ab einer bestimmten abgelaufenen Zeit funktioniert NEXT dann auch nicht mehr.)

Der String funktioniert mit NOW(). Dabei darf das NOW() nicht in Anführungszeichen.

Beispiel:

INSERT INTO log (date, artist, title) VALUES (NOW(), "%a", "%b")

Damit scheint dann auch das Logging Problem gelöst zu sein. Zumindest wird jetzt jeder Titel geloggt. Getestet mit 2.1.28/29.

Gruss

Polli

Erklären kann ich mir das nicht. Aber wenn es nun geht, ist ja alles in Ordnung.

Ab Version 2.1.30 (kommt nachher) dann einfach die Anführungszeichen bei %a und %b weglassen.

Hi Torben

Muss meine Aussage zurücknehmen. Das Logging ist doch noch genau wie vorher. Also nur jeder 2. Titel. Es kam mir erst so vor wie gelöst. Keine Ahnung warum. Hat vielleicht auch nur kurz funktioniert. Warum auch immer :shock:

Musst du wohl doch nochmal schauen, da in der aktuellen Dev (2.1.30) der Fehler wieder ganz anders ist. (Mortens Beitrag)

Gruss

Polli

Ich hab’s gerade nochmal probiert (mit der fast-v.31), auch mit Auslaufenlassen der Titel in der Automation - bei mir wird brav alles geloggt.

Probier’s doch gleich nochmal mit der v.31, nur um auszuschließen, dass das durch den von Morten gemeldeten Fehler beeinflusst wird.

Torben

Ich habe das ganze mal im Test bei mir zuhause probiert. Hier geht es auch ohne Probleme. Im Sender haben wir einen Linux-Router mit Proxy. Ich denke das ich wohl das Problem dort suchen muss. Trotzdem merkwürdig das er immer nur jeden zweiten Titel loggt.

Naja. Ich teste morgen mal die 2.1.31 im Sender. Hier läuft sie wunderbar. Auch das Stottern am Anfang ist jetzt weg. Die Fade funktion ist zwar etwas umständlich zu erreichen, aber sie ist erstmal drin. Sehr schön :slight_smile:

Gruss

Polli

Ich nochmal :slight_smile:

Habe die 2.1.31 mal hier im Sender getestet. Das Logging hat immer noch den gleichen Fehler. Dann muss ich unserem Admin auf die Füsse treten, das er den Router und den Proxy mal überprüft. :wink:

Ich halte dich auf dem laufenden, um eventuell eine Lösung anbieten zu können wenn jemand das selbe Problem auch mal haben sollte. Geben und nehmen :wink:

Bin aber sonst sehr zufrieden mit der 2.1.31. Super Arbeit Torben. Danke :slight_smile:
Freue mich schon drauf wenn ich mAirList demnächst in die normale Produktion integriere. Im Moment teste ich auf einem Non-Production-System bzw. nutze es nur für Sendungen die ich selbst betreue.

Gruss

Polli