Wie hat eine mySQL Tabelle für configDB auszusehen? In der Comandref steht lediglich das diese leer sein muss. Aber ich gehe mal davon aus dass ich neben einem
CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
die Rechte (GRANT) für den fhemuser noch erweitern muss? Oder? ein
GRANT SELECT, INSERT, DELETE, UPDATE ON `configDB`.* TO 'fhemuser'@'%';
aus der DbLog Einrichtung wird da doch sicherlich nicht ausreichen?
Danke,
Karsten
Moin Karsten,
wenn ich mich recht entsinne, dann hat configDB alles von alleine angelegt gehabt und auch komplett automatisch befüllt.
Ich habe jedenfalls keine einzige der Tabellen angelegt, die hinterher drin waren... ;)
Gruß,
Stephan
ein direktes
configdb migrate
führt zu folgendem Log-Eintrag
DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Unknown database 'configDB' at configDB.pm line 677.
und einem Absturz von FHEM
Zitat von: DerFrickler am 08 Februar 2017, 21:28:08
Wie hat eine mySQL Tabelle für configDB auszusehen? In der Comandref steht lediglich das diese leer sein muss. Aber ich gehe mal davon aus dass ich neben einem
CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
die Rechte (GRANT) für den fhemuser noch erweitern muss? Oder? ein
GRANT SELECT, INSERT, DELETE, UPDATE ON `configDB`.* TO 'fhemuser'@'%';
aus der DbLog Einrichtung wird da doch sicherlich nicht ausreichen?
Danke,
Karsten
Laut commandref sollte das ausreichen.
ZitatThe database tables will be created automatically.
Die configDB.conf Datei hast Du entsprechend Deiner Datenbank eingerichtet?
Gruß
Dan
Zitat von: DerFrickler am 08 Februar 2017, 21:28:08
In der Comandref steht lediglich das diese leer sein muss.
das ist falsch. in der cmd-ref steht auch
You must have access to a SQL database. somit must DU dich um den zugriff auf die db kümmern.
den kannst du ja auch erstmal ohne fhem testen, wenn das geht prüfe mal dein configDB.conf auf den richtigen pfad, rechtw und den richtigen inhalt
ZitatIMPORTANT:
This file must be named "configDB.conf"
This file must be located in the same directory containing fhem.pl and configDB.pm, e.g. /opt/fhem
Hallo zusammen,
ich möchte das Thema noch mal aufgreifen, da ich hier leider nicht zu einem Ergebnis gekommen bin.
Es bleibt beim Fehler:
DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Access denied for user 'fhem'@'%' to database 'configDB
' at configDB.pm line 691.
Während es mit sqlite3 ein Kinderspiel ist, macht mir mySQL zu schaffen. Laut Commandref heisst es:
You must have access to a SQL database.
Was bedeutet das jetzt genau? Müssen der MySQL root-user und der fhem-user identisch sein? Soll heissen dass ich den MySQL root-user in der configDB.conf angeben muss? Der fhem-user ist in MySQL wegen DBLog bereits bekannt, natürlich nicht für die table configdb die ja erzeugt werden soll.
Vielen Dank für Eure Hilfe.
Hast Du denn überhaupt einen User eingerichtet? Wenn ja, hast du dem User gleich ein Passwort mitgegeben?
Zitat von: DerFrickler am 06 Juli 2017, 23:08:52
DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Access denied for user 'fhem'@'%' to database 'configDB
' at configDB.pm line 691.
Du musst auf deiner MySQL-Instanz ein leeres Datenbank-Schema (eine Datenbank) mit Namen 'configDB' anlegen.
Dann musst du
auf der Datenbank einen User anlegen, der bspw.
fhemuser heißt und ihm ein Passwort geben.
Wichtig ist du solltest den User so einrichten, dass er nicht nur von
localhost aus Zugriff auf die Datenbank haben darf, sondern von überal her (
fhemuser@%)
Weiterhin benötigt dieser User entsprechnde Berechtigungen auf das oben angelegte Datenbank-Schema:
SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER sollten genügen. Du kannst dem User aber zur Not auch alle Berechtigungen auf das Schema geben (Achtung: Nicht global! Nur für dieses Schema!)
Dann sollte das mit der, in der commandref angegebenen configDB.conf für MySQL funktionieren.
Host, ggf. Port und natürlich Passwort des oben angelegten Datenbank-Users noch korrekt eintragen!
%dbconfig= (
connection => "mysql:database=configDB;host=db;port=3306",
user => "fhemuser",
password => "Passwort des Datenbank-Users",
);
Das ist keine Raketenwissenschaft!
Gruß Benni.
Danke, möglicherweise sollte man diese Ausführungen mal in den Beschreibungen ergänzen.
Soweit so gut.. Gibt es bezüglich der Längen der Datenwörter Einschränkungen?
2017.07.07 10:18:44 1: PERL WARNING: DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.
DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.
Gruß und Danke!
Edit:
aus der configDB
DEVICE varchar(64) utf8_bin
auf der fhem (DbLog)
DEVICE varchar(64) utf8_bin
Demnach frage ich mich wo da ein Problem auftauchen kann?
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/db_create_mysql.sql
Eventuell wäre es hilfreich wenn man sich vorher ein wenig mit den Grundlagen einer MySQL Datenbank beschäftigt.
Oder WENIGSTENS sich die Scripte einmal anschaut und was man nicht versteht in eine Suchmaschine ein gibt.
Grüße
Wenn in einer Anleitung beschrieben steht dass alles von selbst erledigt wird und es dennoch einiges an Vorarbeit gibt, dann darf man schon mal etwas verwirrt sein. Zudem glaube ich das aktuelle Problem eingrenzen zu können, was jetzt nichts mehr mit der Datenbank selbst zu tun hat.
Zitat von: DerFrickler am 07 Juli 2017, 09:56:20
aus der configDB
DEVICE varchar(64) utf8_bin
auf der fhem (DbLog)
DEVICE varchar(64) utf8_bin
Demnach frage ich mich wo da ein Problem auftauchen kann?
Dann schaue doch einfach mal wie Dein Schema tatsächlich angelegt wurde. Eventuell passt da was nicht.
http://mizine.de/mysql/mysql-tabellenstruktur-anzeigen-lassen/
Das werde ich gleich noch mal explizit auf der console nachschauen. Die Daten aus dem vorherigen Post stammen aus phpMyAdmin, sollten dann aber hoffentlich auch korrekt sein. Ich vermute (da ich wirklich lange device Namen benutze) dass es irgendwo einen device Namen in meiner config gibt, der nicht über DbLog erfasst wird und demnach nie Probleme gemacht hat. Die FB-DECT Geräte sind solche Kandidaten. Sqlite3 hat diesbezüglich nie Problem gemacht. Das war aber auch schon eine Phänomen was bei dem DbRep Modul aufgedeckt wurde.
Zitat von: DerFrickler am 07 Juli 2017, 11:06:33
Das werde ich gleich noch mal explizit auf der console nachschauen. Die Daten aus dem vorherigen Post stammen aus phpMyAdmin, sollten dann aber hoffentlich auch korrekt sein. Ich vermute (da ich wirklich lange device Namen benutze) dass es irgendwo einen device Namen in meiner config gibt, der nicht über DbLog erfasst wird und demnach nie Probleme gemacht hat. Die FB-DECT Geräte sind solche Kandidaten. Sqlite3 hat diesbezüglich nie Problem gemacht. Das war aber auch schon eine Phänomen was bei dem DbRep Modul aufgedeckt wurde.
Ach so, das was Du da angegeben hattest war schon ein Auszug aus der Tabellenstruktur direkt aus der MySQL Datenbank? Nur halt eben mit phpmyadmin angeschaut?
genau.
Jetzt halt der Gedankengang was Datenmässig in der einen stehen kann und was in der anderen. Demnach muss ich mal alle Devices aus der hem.cfg der Länge nach überprüfen. Ist jetzt hat etwas Fleissarbeit.
Zitat von: DerFrickler am 07 Juli 2017, 09:56:20
2017.07.07 10:18:44 1: PERL WARNING: DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.
DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.
Die Meldung müsste relativ oft kommen, oder? Eigentlich immer wenn er in die DB schreiben will/muß.
Zitat von: DerFrickler am 07 Juli 2017, 11:13:33
Jetzt halt der Gedankengang was Datenmässig in der einen stehen kann und was in der anderen. Demnach muss ich mal alle Devices aus der hem.cfg der Länge nach überprüfen. Ist jetzt hat etwas Fleissarbeit.
mach ein "list .*" im Eingabefeld, damit sollest du alle Devices als Liste bekommen.
aktuell nur einmal bei dem Versuch der Migration. Nach der ersten Meldung wird abgebrochen. Wie schon angemerkt werde ich mich heute mal auf die Suche machen.
Zitat von: kadettilac89 am 07 Juli 2017, 11:22:31
mach ein "list .*" im Eingabefeld, damit sollest du alle Devices als Liste bekommen.
und ich wollte schon die fhem.cfg durchstöbern. Das passiert wenn man mal 1-2 Monate sich nicht mit der Thematik fhem befasst, danke!
Den Übeltäter habe ich identifiziert. Was macht jetzt das "deviceRename"? Werden damit auch die Abhängigkeiten zu "structure" und die peers zu anderen Geräten angepasst?
Meinst Du FHEM rename oder tatsächlich das set deviceRename ?
ich meine das set deviceRename
noch nie probiert. bilde mir aber ein das es klappt.
Zitat von: CoolTux am 07 Juli 2017, 12:16:58
noch nie probiert. bilde mir aber ein das es klappt.
gut, ich werde es dann später mal ausprobieren, meine mich aber daran erinnern zu können es mal im Zusammenhang mit weiteren Abhängigkeiten erfolgreich genutzt zu haben. Ich melde mich wenn ich es angepasst habe.
Vielen Dank!
Edit:
set deviceRename hat alle Abhängigkeiten geändert.
Die Migration auf MySQL war erfolgreich.
Danke!
for d in $(grep define fhem.cfg|cut -d" " -f2); do n=$(echo $d | wc -c); echo "$n $d"; done|sort -g