Hallo Zusammen,
ich hatte etwas mit DbLog und MySql-Server (lokal und remote) herumexperimentiert.
Dabei hatte ich versucht - was zugegebenermaßen etwas hinrissig ist - zwei Instanzen von DbLog anzulegen: eine lokal und eine remote.
Dabei hatte ich das Problem, dass ich zur remote-Datenbank keine Verbindung bekam (state blieb auf "waiting for connection"). Erst als ich das lokal angebundene DbLog entfernte konnte eine Verbindung zur remote-Datenbank hergestellt werden.
Für mich sieht das so aus, dass nur eine Instanz von DbLog angelegt werden kann (was ja auch ausreichen sollte). Damit niemand darüber stolpert daher hier der Hinweis.
Falls meine Beobachtung korrekt ist, sollte man(?) das auch in der Commandref und im Wiki vermerken. Ideal wäre es natürlich, wenn das DbLog-Modul das Anlegen einer zweiten Instanz gleich verweigern würde.
Viele Grüße
Christoph
Es kann nichts mit der Zahl der Instanzen zu tun haben, denn ich benutze mehrere davon.
Der Fehler muss woanders liegen.
auch gemischt remote und lokal angebunden?
Nein. Aber auch das wird funktionieren. Ich kann das aber auch gerne testen, wenn du magst. Du hast oben gesagt, dass mehrere Instanzen nicht möglich sind. Das ist generell schon einmal falsch.
Achso: Es kann sein, dass die externe DB einen anderen Port verwenden muss oder das ganze ist kaputt, wie vieles in DBLog.
remote angebunden funktioniert ja (zumindest alleine)
Heißt das, dass ich für lokal und remote jeweils einen anderen Port benötige trotz unterschiedlicher IP? Ich hatte nämlich beide gleichzeitig auf dem Standardport (3306).
Es wäre einen Versuch wert.
Und ich meinte, dass man vermutlich dann unterschiedliche Ports benötigt, wenn man lokal und remote auf eine DB zugreift. Ungetestet.
Generell bleibt es aber dabei: Mehrere Instanzen sind möglich.
Zur Klarstellung:
Ich möchte nicht zweifach auf eine Datenbank zugreifen sondern jeweils "einfach" auf eine Datenbank, die lokal läuft und auf eine, die auf einem Remote-Server ist.
Hallo CQuadrat
Ich klinke mich hier mal ein. Ich haette auch gerne die SQL-Datenbank fuer DB-Log auf einem anderen Server, als dem Raspi. Leider habe ich gar nichts darueber gefunden, so dass ich am Ende froh war, dass es auf dem Raspi laeuft.
Kennst Du ein Tutorial oder etwas in der Art, welches auch von dummies wie mir ausgefuehrt werden kann?
Sorry fuer die Kaperung, aber es bot sich einfach an!
Gruss Christoph
a) DbLog auf localhost funktioniert (klar, ist der Standardfall)
b) Ausschließlich DbLog zu einem Remote-Server funktioniert. (der muss dann natürlich für Remote-Zugriff administriert sein)
Schau Dir mal das an:
http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely (http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely)
c) Nur wenn ich zweifach DbLog benutzen will (eine DbLog-Instanz zu einem lokaln mySQL-Server und eine DbLog-Instanz zu dem remote-Server), dann wird die Verbindung zur Remote-DB nicht aufgebaut. a) und b) gleichzeitig
Mir ist bewusst, was du meinst. Trotzdem denkt derjenige, der nur deinen ersten Beitrag hier im Thread liest (und du glaubst gar nicht, wie viele so etwas tun), dass man grundsätzlich nicht 2 mal DBLog nebeneinander betreiben kann. Das ist falsch.
Auch dass es remote gar nicht geht, glaube ich noch nicht. Wenn ich mal ganz viel Zeit habe, werde ich das auch noch testen.
Zitat von: marvin78 am 27 August 2015, 21:38:07
Auch dass es remote gar nicht geht, glaube ich noch nicht. Wenn ich mal ganz viel Zeit habe, werde ich das auch noch testen.
Das habe ich jetzt nicht behauptet. Es geht (bei mir) nicht: remote und lokal
gleichzeitig.
Zitat von: CQuadrat am 27 August 2015, 12:09:19
Für mich sieht das so aus, dass nur eine Instanz von DbLog angelegt werden kann (was ja auch ausreichen sollte). Damit niemand darüber stolpert daher hier der Hinweis.
Falls meine Beobachtung korrekt ist, sollte man(?) das auch in der Commandref und im Wiki vermerken. Ideal wäre es natürlich, wenn das DbLog-Modul das Anlegen einer zweiten Instanz gleich verweigern würde.
Da steht's.
Ich betreibe 2 DbLogs auf localhost (für mich auch sinnvoll, 1 DB für "historische" Daten die 30 Tage vorgehalten werden, 1 DB für "kurzzeitige" Daten (zB Luftfeuchtigkeit zur Lüftersteuerung) die nur 24h behalten werden).
Testweise habe ich gerade mal einen dritten DbLog auf einem externen Server eingerichtet - auch hier bekomme ich "waiting for connection"
Scheint also wirklich ein Bug zu sein und du solltest dich mal an den Entwickler wenden.
Zitat von: marvin78 am 28 August 2015, 07:48:49
Da steht's.
Da steht eben nicht, dass es remote nicht geht. Da steht nur dass es remote und local nicht
gleichzeitig geht!
Das betätigt ja auch gerade der Vorposter.
Ok @CQuadrat. Ich sehe, du kannst deinen eigenen und meinen Text nicht lesen. Mir geht es nur um die Feststellung, dass 2 und mehr Instanzen sehr wohl funktionieren. In meinem Zitat von dir steht nämlich nichts von remote und im Titel dieses Threads auch nicht. Wer das liest, kümmert sich nicht darum, ob du Probleme mit einer lokalen und einer remote-Verbindung hast. Der sieht nur "2 Instanzen gehen nicht". Und das ist falsch. Nur darum geht es mir.
Ich will das hier aber auch nicht weiter in die Länge ziehen. Das macht keinen Sinn. Ich würde an deiner Stelle lieber die Energie darauf verwenden, meinen Vorschlag mit den Ports zu probieren. Ich sehe das hier noch nicht wirklich als Bug. Das könnte ein sehr "normales" Problem mit MySQL sein.
Zitat von: marvin78 am 28 August 2015, 08:48:11
(...) Ich würde an deiner Stelle lieber die Energie darauf verwenden, meinen Vorschlag mit den Ports zu probieren. Ich sehe das hier noch nicht wirklich als Bug. Das könnte ein sehr "normales" Problem mit MySQL sein.
Mit verschiedenen Ports hatte ich es auch schon erfolglos probiert.
Ein Workaround wäre auf dem FHEM-Rechner einen rinetd einzurichten, der zB Port 3307 auf Port 3306 der entfernten mysql-Db weiterleitet. Aus FHEM heraus würdest du die Remote-DB dann auch mit localhost Port 3307 ansprechen.
Der saubere Weg wäre natürlich die Ursache im DbLog zu finden und zu beheben.
Wie schon gesagt: DBLog ist an vielen Stellen fehlerhaft. Die Frage ist, ob sich der Aufwand lohnt, das Problem zu lösen.
Ich debugge das ganze gerade etwas.
DbLog steigt aus mit der Fehlermeldung:
2015.08.28 11:03:58.164 4: DbLog myDbLog_neu: Rereadcfg requested.
Can't call method "commit" on unblessed reference at ./FHEM/93_DbLog.pm line 1300.
In Zeile 1300 steht im Modul:
1298 when ('rereadcfg') {
1299 Log3($name, 4, "DbLog $name: Rereadcfg requested.");
1300 $dbh->commit() if(! $dbh->{AutoCommit});
1301 $dbh->disconnect();
1302 $ret = _DbLog_readCfg($hash);
1303 return $ret if $ret;
1304 DbLog_Connect($hash);
1305 $ret = "Rereadcfg executed.";
Mit meinen beschränkten Perl-Kenntnissen interpretiere ich das so, dass eine Routine names commit() aufgerufen wird; und die scheint es nirgends zu geben :-\