FHEM Forum

FHEM => Sonstiges => Thema gestartet von: rubbertail am 05 Juli 2016, 10:40:01

Titel: [gelöst] weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: rubbertail am 05 Juli 2016, 10:40:01
Salut betateilchen,

ich hab leider auch das Problem aus https://forum.fhem.de/index.php/topic,55275.0.html - deinen Workaround habe ich zunächst getestet, so dass meine configDB.conf jetzt so aussieht (vorher waren die Kommentare aus der commandref noch drin, es waren nur die u. a. Zeilen "unauskommentiert" - ich hab aber nun alle Kommentarzeilen rausgeworfen und finde auch keine Leerzeilen mehr):

%dbconfig= (
connection => "mysql:database=configDB;host=10.10.10.12;port=3306",
user => "fhemdb",
password => "xxxxxx",
);


Ich hab aus dem SVN die neue configDB.pm (und auch die 98_configDB.pm für das FHEM-Verzeichnis) runtergeladen und in die jeweiligen Verzeichnisse gepackt, auf Ownership etc. geachtet... mit allem Neu erhalte ich folgende Meldung beim Versuch, über

/etc/init.d/fhem start

FHEM zu starten:
2016.07.05 10:30:42 1: PERL WARNING: Use of uninitialized value in string eq at configDB.pm line 212.
2016.07.05 10:30:42 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 229.
2016.07.05 10:30:42 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 231.
2016.07.05 10:30:42 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 233.
2016.07.05 10:30:42 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in concatenation (.) or string at configDB.pm line 676.
Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at configDB.pm line 676.


Vermutlich mach ich irgendwas falsch, aber leider reichen meine Fähigkeiten noch nicht dazu rauszukriegen, was das ist. Hättest du bitte einen Tipp für mich?

Vielen Dank.

Martin
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: reibuehl am 05 Juli 2016, 13:18:39
Ich denke mal, dass der Fehler in diesem Teil sitzt:

## begin experimental
## support multiple hosts from one fhem installation
##
my $configs = join("",@config);
my @configs = split(/;/,$configs);
my $count   = @configs;

if ($count > 1) {
   my $fhemhost = hostname;
   foreach my $c (@configs) {
      next unless $c =~ m/^%dbconfig.*/;
      eval $c;
      last if ($dbconfig{fhemhost} eq $fhemhost);
   }
   eval $configs[0] unless (defined($dbconfig{fhemhost}) && length($dbconfig{fhemhost}))
} else {
   eval $configs[0];
}
##
## end experimental


Vermutlich tut der Code in der Zeile

my @configs = split(/;/,$configs);

nicht dass, was er eigentlich tun soll. Ich denke mal der soll nicht innerhalb einer %dbconfig() Definition am Semikolon trennen sondern wohl eher bei verschiedenen %dbconfig() Blöcken diese dann trennen oder sehe ich das falsch? Kann es sein, das der Code nur bei SQlite korrekt funktioniert, weil dort keine ";" innerhalb des "connection" strings vorkommen?
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 13:41:45
Zitat von: reibuehl am 05 Juli 2016, 13:18:39
Ich denke mal der soll nicht innerhalb einer %dbconfig() Definition am Semikolon trennen sondern wohl eher bei verschiedenen %dbconfig() Blöcken diese dann trennen oder sehe ich das falsch? Kann es sein, das der Code nur bei SQlite korrekt funktioniert, weil dort keine ";" innerhalb des "connection" strings vorkommen?

100 Punkte. Muss ich mir heute abend was anderes ausdenken.

@rubbertail: nimm einfach die ältere configDB.pm aus Deinem restore-Verzeichnis (vor dem vergangenen Wochenende)

Zitat(und auch die 98_configDB.pm für das FHEM-Verzeichnis)

Eine Datei mit diesem Namen gibt es nicht. Man achte auf Groß-/Kleinschreibung ;)
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: rubbertail am 05 Juli 2016, 13:42:59
Naja, fast ;) danke erstmal für eure Assistenz. :)
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: reibuehl am 05 Juli 2016, 14:12:19
Zitat von: betateilchen am 05 Juli 2016, 13:41:45
100 Punkte. Muss ich mir heute abend was anderes ausdenken.

Wie soll den das Config File aussehen, das Du gerne hättest? Ich hab nicht ganz verstanden, für welchen Fall man mehrere Configs brauchen könnte.
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 14:34:59
Zitat von: reibuehl am 05 Juli 2016, 14:12:19
Ich hab nicht ganz verstanden, für welchen Fall man mehrere Configs brauchen könnte.

Das kannst Du auch nicht verstanden haben, denn das habe ich noch nirgends erklärt  8)

Bei mir nutzen mehrere raspberry eine einzige fhem-Installation, die auf einem nfs-share liegt. Es gibt aber nur eine einzige configDB.conf, also muss ich in dieser Datei mehrere Konfigurationen haben, damit jeder raspberry "seine" Konfigurationsdatenbank verwendet. Die Unterscheidung erfolgt anhand des hostname der einzelnen Plattform, die in der .conf zusätzlich eingetragen wird.


%dbconfig= (
connection => "mysql:database=configDB;host=10.10.10.12;port=3306",
user => "fhemdb",
password => "xxxxxx",
fhemhost => raspberry1
);


Das feature ist noch "experimental". An die Fälle mysql und postgresql, die beide mit ; innerhalb der Konfiguration arbeiten, hatte ich schlichtweg nicht gedacht.

Den split werde ich wahrscheinlich anhand %dbconfig durchführen anstatt an Semikolon. Muss ich heute abend testen.

Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: rubbertail am 05 Juli 2016, 15:11:54
Bestens, mit der "alten" configDB.pm wills wieder. Hätt ich nun auch selber drauf kommen können... danke für die Brettvormkopfentfernhilfe. :)
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: reibuehl am 05 Juli 2016, 16:22:43
Zitat von: betateilchen am 05 Juli 2016, 14:34:59
Bei mir nutzen mehrere raspberry eine einzige fhem-Installation, die auf einem nfs-share liegt. Es gibt aber nur eine einzige configDB.conf, also muss ich in dieser Datei mehrere Konfigurationen haben, damit jeder raspberry "seine" Konfigurationsdatenbank verwendet. Die Unterscheidung erfolgt anhand des hostname der einzelnen Plattform, die in der .conf zusätzlich eingetragen wird.

Wäre es nicht besser, den Pfad zu der systemspezifischen configDB.cfg als fhem.pl Kommandozeilen-Option anzugeben? Oder über einen Link aus dem NFS mount heraus auf ein lokales File oder ein Overlay mount oder... :-)
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 19:35:09
Kann mal bitte einer der mysql-Anwender die angehängte Version testen
und dann Rückmeldung geben, ob fhem wieder funktioniert?

Aktuell habe ich keinen mysql Server greifbar, um es selbst auszuprobieren.
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: cortmen am 05 Juli 2016, 19:49:30
 :)leider nein.

PERL WARNING: Use of uninitialized value in string eq at configDB.pm line 212.
2016.07.05 19:47:11 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 229.
2016.07.05 19:47:11 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 231.
2016.07.05 19:47:11 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in pattern match (m//) at configDB.pm line 233.
2016.07.05 19:47:11 1: PERL WARNING: Use of uninitialized value $cfgDB_dbconn in concatenation (.) or string at configDB.pm line 676.
Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) a
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 19:51:12
ok... da ich nicht noch 100 Fragen stellen möchte (z.B. ob die Datei an die richtige Stelle kopiert wurde, ob ein restart durchgeführt wurde usw.) werde ich mir nun doch einen mysql Server aufsetzen.
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 20:10:46
Bitte jetzt nochmal testen.
Die angehängte Version habe ich erfolgreich mit mysql und sqlite getestet.
Da der connection-String für postgresql auch ein ; enthält, gehe ich davon aus, dass es auch dort funktioniert.

Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: cortmen am 05 Juli 2016, 20:16:58
diese Version passt
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: betateilchen am 05 Juli 2016, 20:19:47
Danke für die Unterstützung & Rückmeldung, die Version habe ich nun eingecheckt.
Titel: Antw:weiterhin Probleme mit configDB.pm - anderes Thema leider geschlossen
Beitrag von: rubbertail am 06 Juli 2016, 10:55:22
Kam gestern nicht mehr dazu zu testen; Rückmeldung heute dennoch: Mit der neuen Version klappts auch bei mir. Danke betateilchen.