NEWS
Probleme mit SQL adapter nach Stromausfall
-
Seit einem Stromausfall kann sich der SQL Adapter (2.2.0) nicht mehr mit der MariaDB verbinden. Es kommt immer wieder die Fehlermeldung ETIMEDOUT
error: sql.0 (2317) Error: connect ETIMEDOUT
Der iobroker läuft als Debian VM auf einer Synology wo auch auch die MariaDB läuft.
Die Datenbank ist von einem anderen PC aber auch von der Debian VM mit HeidiSQL ohne Probleme erreichbar.Wenn ich auf mittels phpMyAdmin mit den Status von der Datenbank ansehen, sehe bei den Prozessen, dass der Zugriff vom SQL Adapter als "unauthenticated user" registriert wird, hab es auch schon über einen andern Benutzer versucht, aber das selbe.
Habe schon folgendes versucht (ohne Erfolg)
- SQL Adapter auf ältere Version
- älters iobroker Backup einspielen
- älteren Snapshot von der VM aktivieren
Die Datenbank ist überigends schon recht groß ca. 2,3GB mit 40 000 000 Einträge, habe auch schon mal ältere Einträge gelöscht, da dies eventuell die Ursache ist, aber scheinbar ändert das nichts an der Größe.
Jemand eine Idee?
-
@geraldk66 Die Einstellungen im Adapter kontrollieren! Also das Ziel, wenn es auf einem anderen System ist bitte nicht über den Hostnamen sondern über die IP-Adresse ansprechen. Port kontrollieren und die Zugangsdaten.
Ggf. den Zugang / Benutzer und Passwort in der Datenbank neu anlegen, MariaDB/MySQL kennt den Benutzer pro Zielsystem.
manfred@192.168.1.3
ist ein anderer Benutzer alsmanfred@192.168.1.5
odermanfred@127.0.0.1
Du kannst also nicht einfach einen anderen Benutzer nehmen sondern musst einen mit der Quell-IP, also des ioBrokers anlegen
-
@bananajoe Danke für die Info.
Glaube nicht dass es an den Benutzern liegt, hab jetzt eine neu VM Debian 12 aufgesetzt und den IO Broker neu installiert und auch hier geht es nicht.
Bei der Durchsicht der logs ist mir noch folgendes aufgefallen
2024-03-03 09:29:31.220 - warn: admin.0 (915) sql has an invalid jsonConfig: [{"instancePath":"/items/dbTab/items/_testConnection/type","schemaPath":"#/definitions/componentType/enum","keyword":"enum","params":{"allowedValues":["alive","autocomplete","cron","fileSelector","text","textSendTo","number","port","color","checkbox","chips","header","slider","ip","user","room","func","select","icon","image","panel","password","file","sendTo","staticText","custom","pattern","table","accordion","instance","language","setState","certificate","certificates","staticImage","staticLink","divider","objectId","selectSendTo","autocompleteSendTo","checkLicense","uuid","timePicker","datePicker"]},"message":"must be equal to one of the allowed values"},{"instancePath":"/items/dbTab","schemaPath":"#/properties/items/patternProperties/%5E.%2B/allOf/8/if","keyword":"if","params":{"failingKeyword":"then"},"message":"must match "then" schema"}]
Kann das damit zusammen hängen?
-
@geraldk66 sagte in Probleme mit SQL adapter nach Stromausfall:
Glaube nicht dass es an den Benutzern liegt, hab jetzt eine neu VM Debian 12 aufgesetzt und den IO Broker neu installiert und auch hier geht es nicht.
Weiter oben hast du geschrieben das es von einem anderen PC aus und einer anderen VM geht
Bei der neuen VM wo es auch nicht geht: Hatte die die gleiche IP?Im phpMyAdmin oder per Commandline mach mal eine SQL-Abfrage zu den Benutzern und Ihren Hosts:
SELECT host, user FROM mysql.user;
siehe auch https://www.cyberciti.biz/faq/how-to-show-list-users-in-a-mysql-mariadb-database/
Da muss es einen Eintrag geben mit der IP des ioBroker-Systems
-
Hier die User und host, hab es mit user test und iobroker versucht
192.168.1.162 ist man Laptop mit zugriff über HeidiSQL
192.168.1.6 ist der iobrokerjedesmal mit user iobroker
In der neu aufgesetzten VM war die IP Adresse anders ab auch war im "unautenticated user" zu sehen. Hab auch von der VM des iobrokers über heidsql auf die Datenbank zugegriffen, ohne Probleme.
kann es ein Problem mit den Versionen von Node.js oder NPM sein?
-
@geraldk66 sagte in Probleme mit SQL adapter nach Stromausfall:
kann es ein Problem mit den Versionen von Node.js oder NPM sein?
Nein. Aber ich würde so oder so zur empfohlenen Version 18 raten.
-
@geraldk66 da hab ich heute mal was gelernt - es gibt also eine Wildcard
%
für den Host ... gewöhne ich mir aber lieber gar nicht erst an ... -
@geraldk66 wo ich deinen Screenshot gerade sehe von den Adapter-Einstellungen ...
Das Symbol in den Feldern neben den Benutzernamen etc, kommt das von einem Passwortmanager?Daran bin ich nämlich mal verzweifelt weil mein Passwortmanager-Browser-Plugin zuverlässig jedesmal wenn ich einen solchen Dialog aufgerufen hatte das Kennwort falsch eingesetzt hat, auch nach dem manuellen Eintippen. Erst als ich den komplett deaktiviert hatte (bzw. einen Browser ohne das Plugin genommen habe), hat es funktioniert.
Wenn du den Expertenmodus in der Objekte-Ansicht aktivierst und dann den Eintrag
system.adapter.sql.0
markierst und hinten auf den Stift klickst siehst du das Konfigurations-JSON des Adapters.
Weiter unten findest du die eingestellten Zugansdaten im Klartext:
Kannst ja mal prüfen ob das richtige übernommen wurde. -
@bananajoe
Ja das kommt von einem Passwort Manager, im Konfigurations-JSON des Adapters steht das Korrekte Passwort.
Danke für diese Info, ist immer mal praktisch nachsehen zu können welches Passwort eingestellt ist.Hab mal versucht vom PC aus über Hedisql mich mit dem falsch Passwort oder Benutzer anzumelden, da kommt dann auch "unauthenticated user" Meldung im phpMyAdmin.
Habe gerade das Passwort geändert und keine Sonderzeichen eingetragen um hier irgendein Problem auszuschließen. Hat aber auch nichts gebracht.Kann es mit dieser Warnung zusammen hängen?
warn: admin.0 (784) sql has an invalid jsonConfig: [{"instancePath":"/items/dbTab/items/_testConnection/type","schemaPath":"#/definitions/componentType/enum","keyword":"enum","params":{"allowedValues":["alive","autocomplete","cron","fileSelector","text","textSendTo","number","port","color","checkbox","chips","header","slider","ip","user","room","func","select","icon","image","panel","password","file","sendTo","staticText","custom","pattern","table","accordion","instance","language","setState","certificate","certificates","staticImage","staticLink","divider","objectId","selectSendTo","autocompleteSendTo","checkLicense","uuid","timePicker","datePicker"]},"message":"must be equal to one of the allowed values"},{"instancePath":"/items/dbTab","schemaPath":"#/properties/items/patternProperties/%5E.%2B/allOf/8/if","keyword":"if","params":{"failingKeyword":"then"},"message":"must match \"then\" schema"}]