Mysql DBlog auf Synology NAS mit MariaDB und ActivePerl

Begonnen von Thargor, 05 November 2015, 09:18:55

Vorheriges Thema - Nächstes Thema

Thargor

Hallo,

ich habe gestern mal versucht mein DBLog von SQLite auf Mysql umzustellen, leider stürzt mit FHEM dabei ab.
Folgendermaßen bin ich vorgegangen:
- Mittels phpMyAdmin die Befehle in der  db_create_mysql.sql ausgeführt um Tabellen und Nutzer anzulegen
- Die db.conf angepasst
%dbconfig= (
    connection => "mysql:database=fhem;host=localhost;port=3306",
    user => "XXX",
    password => "XXX",
);

- Activeperl um das Paket DBD-MySQL erweitert

Beim Start meldet FHEM im Logfile brav:
Connecting to database mysql:database=fhem;host=localhost;port=3306 with user XXX
Sobald ich FHEMWeb öffne, stürzt FHEM dann ab. Letzter Logeintrag:
PERL WARNING: Use of uninitialized value $name in substitution (s///) at /usr/local/FHEM/share/fhem/FHEM/01_FHEMWEB.pm line 2229.
PERL WARNING: Use of uninitialized value $name in hash element at /usr/local/FHEM/share/fhem/FHEM/01_FHEMWEB.pm line 2231.
Can't call method "prepare" on an undefined value at /usr/local/FHEM/share/fhem/FHEM/93_DbLog.pm line 1000.


Es werden keine Einträge in die Datenbank geschrieben. Ich vermute also, dass schon die Verbindung scheitert. Benötige ich noch ein anderes Perl Paket für Mysql? In der Logdatei von MariaDB kann ich keine Fehlermeldung finden. Hat irgendjemand eine Idee woran das liegen könnte? DBlog mit SQLite klappt problemlos.

Vielen Dank!
Gruß Lars

Thargor

Habe nun selbst die Lösung gefunden. Die Verbindung kommt tatsächlich nicht zustande, weil ein falscher Socket benutzt wird.

Abhilfe:
Mit "show variables like 'socket';" zum Beispiel in phpMyAdmin den Socket-Pfad ermitteln. Bei mir ist das /run/mysqld/mysqld.sock und dann in /usr/local/FHEM/app/scripts/fhem.sh als Environment Variable einfügen:  export MYSQL_UNIX_PORT=/run/mysqld/mysqld.sock

Dann klappt DBLog auch mit MySQL/MariaDB.




Wernieman

Dazu braucht man keine phpmyadmin (o.Ä.) sondern es reicht die mysql-Konsole:
show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| socket        | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+
1 row in set (0.00 sec)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Mohrengemuse

Zitat von: Thargor am 20 November 2015, 12:04:55
Habe nun selbst die Lösung gefunden. Die Verbindung kommt tatsächlich nicht zustande, weil ein falscher Socket benutzt wird.

Abhilfe:
Mit "show variables like 'socket';" zum Beispiel in phpMyAdmin den Socket-Pfad ermitteln. Bei mir ist das /run/mysqld/mysqld.sock und dann in /usr/local/FHEM/app/scripts/fhem.sh als Environment Variable einfügen:  export MYSQL_UNIX_PORT=/run/mysqld/mysqld.sock

Dann klappt DBLog auch mit MySQL/MariaDB.

Ich habe den gleichen Fehler, ich hab den Ordner FHEM aber nicht in local, wo muss ich die Variable ändern damit das ganze funktioniert?

Gruß Mohrengemuse