NEWS
[Gelöst] SQL (mssql) oszilliert bei Start nach Update
-
Zwischenbericht:
so. nach einiger Recherche habe ich (begonnen) zu begreifen:
-
"node" ist offenbar ein Framework / Dienstprogramm o.ä., das ioBroker am Laufen hält (sorry, bin nur SQL-Entwickler, k.A. von "node", hatte nur auf ein angezeigtes "Update"-Icon geklickt und selbiges erwartet)
-
eine Versionsabfrage, wie man sie so kennt, gibt es offenbar hier nicht (/?, /ver, -v, -ver usw. dto mit "help" oder "?" auch nicht)
-
es gibt zwar eine Website (nodejs.org) mit diversen Dokus, aber die geben nichts (offensichtliches) her zur Versionsabfrage, sind dagegen selber nach Versionen sortiert
-
ABER dann doch noch fündig geworden im Code von einigen Scripts auf dem Host, hoffe mit der richtigen Abfrage:
node.exe -p -e "process.versions.node + ' (' + process.arch + ')'"
und die liefert - voila: 4.5.0 (x64)
Nach den Infos im 2. Post sollte ich die wohl nun besser updaten? funzt 64bit ioBroker-seitig oder besser nur 32bit?
bzgl. der angeforderten Abfrage gibts wohl auch nicht wirklich ein sinnvolles Ergebnis:
C:\>cd /iobroker/node_modules/iobroker.sql C:\ioBroker\node_modules\iobroker.sql>node main.js --force -- logs Cannot find module 'pg-native' { [Error: EPERM: operation not permitted, open 'C:\ioBroker\log\iobroker.2017-04 -11.log'] errno: -4048, code: 'EPERM', syscall: 'open', path: 'C:\\ioBroker\\log\\iobroker.2017-04-11.log' } C:\ioBroker\node_modules\iobroker.sql>
Die dort genannte Logddatei ist 8,7MB groß, 85.049 Zeilen. War die gemeint? Sicher so nicht sinnvoll zu posten, oder?
Das Log neu und kürzer zu generieren und die anderen Install-Empfehlungen mache ich besser vor morgen Ort, nicht per VPN vom Büro aus.
VG bb61
-
-
Liebe wissende Community,
ich habe seit dem Update auf 1.5.3 genau das gleiche Problem.
In der Logdatei findet sich regelmäßig folgende Fehler:
- 2017-04-11 21:06:38.605 - [31merror[39m: sql.0 uncaught exception: mssql.Connection is not a constructor
2017-04-11 21:06:38.605 - [31merror[39m: sql.0 TypeError: mssql.Connection is not a constructor at MSSQLConnectionFactory.open_connection (C:\ioBroker\node_modules\iobroker.sql\lib\mssql-client.js:34:33) at MSSQLConnectionFactory. <anonymous>(C:\ioBroker\node_modules\iobroker.sql\lib\mssql-client.js:4:63) at MSSQLConnectionFactory.open_connection (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\connection-factory.js:4:59) at SQLClient.connect (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client.js:34:54) at SQLClient.connect (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client.js:4:59) at MSSQLClientPool.SQLClientPool.create (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client-pool.js:44:21) at MSSQLClientPool.create (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client-pool.js:4:59) at MSSQLClientPool.SQLClientPool.borrow (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client-pool.js:227:25) at MSSQLClientPool.borrow (C:\ioBroker\node_modules\iobroker.sql\node_modules\sql-client\lib\sql-client-pool.js:4:59) at getId (C:\ioBroker\node_modules\iobroker.sql\main.js:1029:16)</anonymous>
Bei einem erneuten manuellem Update kommen nun folgende Fehlermeldungen:
C:\ioBroker>npm install iobroker.sql --production npm WARN deprecated node-uuid@1.4.8: Use uuid module instead > unix-dgram@0.2.3 install C:\ioBroker\node_modules\unix-dgram > node-gyp rebuild C:\ioBroker\node_modules\unix-dgram>if not defined npm_config_node_gyp (node "C: \Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node -gyp\bin\node-gyp.js" rebuild ) else (node "" rebuild ) Die Projekte in dieser Projektmappe werden nacheinander erstellt. Um eine parall ele Erstellung zu ermöglichen, müssen Sie den Schalter "/m" hinzufügen. unix_dgram.cc win_delay_load_hook.cc ..\src\unix_dgram.cc(9): fatal error C1083: Cannot open include file: 'unistd.h ': No such file or directory [C:\ioBroker\node_modules\unix-dgram\build\unix_dg ram.vcxproj] gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` fail ed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\ npm\node_modules\node-gyp\lib\build.js:276:23) gyp ERR! stack at emitTwo (events.js:106:13) gyp ERR! stack at ChildProcess.emit (events.js:192:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_proces s.js:215:12) gyp ERR! System Windows_NT 6.2.9200 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodej s\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\ioBroker\node_modules\unix-dgram gyp ERR! node -v v7.5.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok > ursa@0.9.4 install C:\ioBroker\node_modules\ursa > node-gyp rebuild C:\ioBroker\node_modules\ursa>if not defined npm_config_node_gyp (node "C:\Progr am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b in\node-gyp.js" rebuild ) else (node "" rebuild ) Die Projekte in dieser Projektmappe werden nacheinander erstellt. Um eine parall ele Erstellung zu ermöglichen, müssen Sie den Schalter "/m" hinzufügen. ursaNative.cc win_delay_load_hook.cc ..\src\ursaNative.cc(157): warning C4244: 'argument': conversion from 'ssize_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNativ e.vcxproj] ..\src\ursaNative.cc(172): warning C4244: 'argument': conversion from 'ssize_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNativ e.vcxproj] ..\src\ursaNative.cc(378): warning C4267: 'initializing': conversion from 'size _t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNa tive.vcxproj] ..\src\ursaNative.cc(379): warning C4267: 'initializing': conversion from 'size _t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNa tive.vcxproj] ..\src\ursaNative.cc(686): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNative .vcxproj] ..\src\ursaNative.cc(734): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNative .vcxproj] ..\src\ursaNative.cc(779): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNative .vcxproj] ..\src\ursaNative.cc(826): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ursaNative .vcxproj] ..\src\ursaNative.cc(945): warning C4267: 'argument': conversion from 'size_t' to 'unsigned int', possible loss of data [C:\ioBroker\node_modules\ursa\build\u rsaNative.vcxproj] ..\src\ursaNative.cc(1003): warning C4267: 'argument': conversion from 'size_t' to 'unsigned int', possible loss of data [C:\ioBroker\node_modules\ursa\build\ ursaNative.vcxproj] LINK : fatal error LNK1181: cannot open input file 'C:\OpenSSL-Win64\lib\libeay 32.lib' [C:\ioBroker\node_modules\ursa\build\ursaNative.vcxproj] gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` fail ed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\ npm\node_modules\node-gyp\lib\build.js:276:23) gyp ERR! stack at emitTwo (events.js:106:13) gyp ERR! stack at ChildProcess.emit (events.js:192:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_proces s.js:215:12) gyp ERR! System Windows_NT 6.2.9200 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodej s\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\ioBroker\node_modules\ursa gyp ERR! node -v v7.5.0 gyp ERR! node-gyp -v v3.5.0 gyp ERR! not ok npm WARN optional SKIPPING OPTIONAL DEPENDENCY: unix-dgram@0.2.3 (node_modules\u nix-dgram): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: unix-dgram@0.2.3 install: `node- gyp rebuild` npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ursa@0.9.4 (node_modules\ursa): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ursa@0.9.4 install: `node-gyp re build` npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1 npm ERR! Windows_NT 6.2.9200 npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\ node_modules\\npm\\bin\\npm-cli.js" "install" "iobroker.sql" "--production" npm ERR! node v7.5.0 npm ERR! npm v4.1.2 npm ERR! path C:\ioBroker\node_modules\unix-dgram\node_modules npm ERR! code EPERM npm ERR! errno -4048 npm ERR! syscall scandir npm ERR! Error: EPERM: operation not permitted, scandir 'C:\ioBroker\node_module s\unix-dgram\node_modules' npm ERR! { Error: EPERM: operation not permitted, scandir 'C:\ioBroker\node_mod ules\unix-dgram\node_modules' npm ERR! errno: -4048, npm ERR! code: 'EPERM', npm ERR! syscall: 'scandir', npm ERR! path: 'C:\\ioBroker\\node_modules\\unix-dgram\\node_modules' } npm ERR!
Ich bin mit meinem Latein am Ende.
Aber den Wissenden fällt das Problem sicher sofort auf
Besten Dank im voraus
Jürgen
-
@jojo43: "operation not permitted" ist meistens irgendwas mit Rechten. Check das mal.
Ansaonsten hast Du Node 7.x, was nicht zu empfehlen ist!! Node 7 ist experimental version und Vorstufe zur stable 8. Also am besten zurück zur node 6.x
@bb61: Auch bei Dir ist "operation not permitted" was mit rechten und kann natürlich passieren wenn der normale iobroker immer mit vollen Adminrechten als Service ausgeführt wird, aber Du den manuellen Start mit User-Rechten machst. Schau mal hier das Du das mit Adminrechten startest (also die Shell in der DU das tust mit Admninrechte starten.
Versuch Du bitte auch mal das "npm install iobroker.sql –production" wie jojo43 ... (mit richtigen Adminrechten natürlich).
Und dann beide bitte nochmal versuchen
Der Output auch von den installs wäre noch interessant
-
Und ansonsten hab ich glaube ich den Grund gerade gefunden … Es gibt eine Neue Version der mssql Library (4.x) und die ist nicht abwärtskompatibel zur 3.x .. und deswegen knallts.
Schaue ich mir heute an und denke später gibt update auf Github
-
1.5.4 auf Github, bitte versuchen.
Ich habe die Abhängigkeiten jetzt so gesetzt das das nicht mehr passieren sollte
-
Hallo Apollon77
ich hab node auf 6.10.2 downgegraded.
Hat zwar ne weile gedauert…
Was die Rechte angeht ist alles auf "Jeder" eingestellt....
-> leider brachte es nicht den erhofften Erfolg.
Es lief ja auch bereits vorher.
habe ebenfalls gesehen, dass auf GitHub eine neue Version liegt, leider erkennt iobroker diese (noch) nicht, so dass ich nicht testen kann.
Zum händisch einspielen fehlt mir noch die Erfahrung - bin froh, dass alles wieder läuft (ausser SQL) und warte
Jürgen
-
manuell einspielen ist einfach: Unter "Adapter oben in der Navi ist ein Github-Symbol (drittes von links) (Install from custom URL) und dort "From Github"§ und da sql wählen. Fertig
-
Hallo Apollon77
das ist ja wirklich einfach! Es hat alles geklappt
Der Fehler ist auch weg und es läuft wieder alles so wie es soll.
DANKE! und Frohe Ostertage!
Jürgen
-
manuell einspielen ist einfach: Unter "Adapter oben in der Navi ist ein Github-Symbol (drittes von links) (Install from custom URL) und dort "From Github"§ und da sql wählen. Fertig `
Nach all dem Oster-Initialisierungs-Stress endlich wieder Zeit und erfreut gelesen, dass es eine Lösung geben mag.ABER: Irgendwie stelle ich mich hier wohl wirklich wohl zu doof an:
Wo ist dieses Github-Symbol bitte zu finden???? Auf der Weboberfläche jedenfalls nicht, siehe Bild unten.
Im Quellcode der Admin-Seite ist es dagegen sehr wohl vorhanden
---> <--- ... Wie bekomme ich die Seite aber nun dazu, mir das auch anzuzeigen? "Expertenmodus" bringt das Icon auch nicht zum Vorschein. Stimmen da vielleicht irgendwelche Spracheinstellungen nicht? –------------- Anders als in den FAQ beschrieben, konnte ich dann aber mit folgendem Aufruf doch noch die Vorabversion installieren:
C:\ioBroker>npm install https://github.com/ioBroker/ioBroker.sql.git --production
Ohne diese komplette URL kam dagegen nur wieder die aktuelle Version. Natürlich war alles als Admin aufgerufen. …und hier der Install-Output
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
\sqlite3@3.1.7 install C:\ioBroker\node_modules\iobroker.sql\node_modules\sqlit
e3
node-pre-gyp install --fallback-to-build[sqlite3] Success: "C:\ioBroker\node_modules\iobroker.sql\node_modules\sqlite3\lib\binding\node-v46-win32-x64\node_sqlite3.node" is installed via remote
iobroker.sql@1.5.4 node_modules\iobroker.sql
├── pg@6.1.5 (packet-reader@0.2.0, pg-connection-string@0.1.3, buffer-writer@1.0.1, semver@4.3.2, pg-pool@1.7.1, pg-types@1.11.0, pgpass@1.0.1)
├── mysql@2.13.0 (sqlstring@2.2.0, bignumber.js@3.1.2, readable-stream@1.1.14)
├── sql-client@0.7.0 (argf@0.0.1, optimist@0.6.1, inote-util@0.8.1)
├── mssql@3.3.0 (generic-pool@2.5.4, promise@7.1.1, tedious@1.14.0)
└── sqlite3@3.1.7 (nan@2.4.0)C:\ioBroker>
Und: ****<size size="150">Der SQL-Adapter läuft!!!</size>**** :-):-):-) Danke!!! Nun ist Ostern gerettet! :-) Übrigens brachte das vorherige vorgeschlagene Downscale auf die Vorversion des SQL-Adapters (1.5.2) auch keine Änderung [2273_iobroker_sql.png](/assets/uploads/files/2273_iobroker_sql.png) | | | | | | |
-
Wo ist dieses Github-Symbol bitte zu finden???? Auf der Weboberfläche jedenfalls nicht `
vielleicht nur nicht auf deiner???http://www.iobroker.net/?page_id=5379&l … _einzelnen
Icon 3.
"Expertenmodus" bringt das Icon auch nicht zum Vorschein.
Stimmen da vielleicht irgendwelche Spracheinstellungen nicht? `
Damit hängt es nicht zusammen, aber vielleicht mit:
@bb61:C:\ioBroker> `
Du hast also eine WIN-Installation.
Da spuckt gerne mal die Firewall oder Avira Browserschutz oder der Browser selbst in die Suppe.
Gruß
Rainer
-
Die von Dir beschriebenen Effekte kenne ich sehr gut und habe das natürlich beachtet. Die treffen hier aber nicht zu.
Win-FW ausschalten, Avira Ausnahme definieren oder auch ganz abklemmen: alles ohne Wirkung: Icon fehlt weiter.
Ausserdem: Im Quellcode sehe ich ja die beiden danebenliegenden Icons. Die erscheinen ja ganz normal in der GUI. In der Quelle ist bei denen aber (zunächst und hier) kein Unterschied erkennbar, also keine spezifische Bedingung oder besondere CSS o.ä. Deshalb vermutete ich, dass ich irgend etwas globaleres an Konfiguration o.ä. übersehen hätte, was ich noch einschalten müßte, ähnlich wie bei dem Expertenmodus. Ich habe ioBroker erst vor einem guten Monat entdeckt, da kann man sicher noch nicht alle Feinheiten kennen.
Wenn WIN (Zitat: "C:\…") nun "das Problem" sein sollte: Dann sollte man das System nicht als darunter lauffähig deklarieren. Oder: Es bleibt dann eben das, was es ist: Ein Bug!
Ich für meinen Teil als Entwickler bin immer froh, wenn Kunden bzw. Anwender - und das möglichst früh bevor sie sich an irgendwelche "Besonderheiten" gewöhnt haben - auf so etwas hinweisen, damit das Gesamtsystem somit robuster und kontext-konformer nutzbar wird. Letztendlich hilft das im Betrieb enorm, den Aufwand im (vor allem 1st-level-)Support zu senken.
Gruss bb61
-
Poste doch bitte mal nen Screenshot von deiner icon-Leiste
-
Lösungsansatz:
Ich sehe, dass z.B. die Title der Icons zwar inhaltlich identisch, aber in anderer Sprache im Seiten-Quelltext (siehe oben erster Kasten) vs. auf der GUI bei "onMouseOver" erscheinen.
"Bei uns in der .NET-Programmierung" gibt es den Begriff / Strukturen wie "(Sprach-)ressourcen", womit die eigentliche GUI culture-spezifisch dem Client diese Inhalte anpasst. Etwas ähnliches wird es also auch hier in diesem Framework geben, sonst würde die Sprachanpassung nicht erfolgen, was sie ja tut.
–> Fehlt hier evtl. eine solche Ressource für das fehlende Icon? (...im ausgelieferten Windows-Installations Set)
alternativ:
alle eigentlichen Icon-Grafiken sind offenbar über IDs definiert
--> fehlt hier evtl. das Grafik-File des fehlenden Icons? (...im ausgelieferten Windows-Installations Set)
...das nur mal so als Idee, wo ich ansetzen würde (an einem mir bekannten System, dessen Architektur ich kennen würde)
VG bb61
-
Poste doch bitte mal nen Screenshot von deiner icon-Leiste `
hab ich doch, s.o. das anhängende Bild
dazu darüber die "code"-Zitate, da ist der Ausschnitt aus dem bei mir erscheinenden Seiten-Quelltext. Die betreffende Zeile habe ich mit –> bzw. <-- markiert (Quellcode für das Icon was fehlt)
-
Dann folgende Ideen:
-
Kommandozeile "iobroker upload admin"
-
ioBroker neu starten
-
Browsercache löschen
-
mal anderen Browser probieren?
-
Wenn dann immer noch nicht, ganze Seite mal mit "SHIFT-Reload neu laden … nur um sicher zu gehen das nicht was komisches ist mit browsercache
-
-
sorry, war kurzentschlossen im Urlaub, deshalb die Funkstille.
Danke für den Tipp:
Chrome: i.O.
IE: i.O.
Firefox: DEFECT (FW V 53.0 32bit)
–> Cache-Problem, merkwürdigerweise aber auch bei allererster Verbindung zu einem ganz frisch installierten ioBroker in einem anderen LAN (was also bisher nicht im Cache sein kann). Vom PC daneben bei gleicher FW-Version funzt es aber! Zu beiden ioBroker-Installationen!
--> Browser-Cache löschen bringt übrigens auch KEINE LÖSUNG (womit ich aber leben kann, wenn ich dort bedarfsweise mit Chrome an das Icon rankomme).
Bei der Gelegenheit aber 2 andere, wirklich gravierende Fehler entdeckt, die o.g. 2. Installaltion von ioBroker betreffend:
1. Installation nach Anleitung auf Webseite (heute dort heruntergeladenes Paket)
Status: Nur Admin-Adapter installiert.
Config der Instanz: von "auf alle IP-Adressen hören" auf eine extra für ioBroker an den Server gebundene IP-Adresse gewechselt (übrigens per Browser auf genau diese IP verbunden, was somit offensichtlich i.O. ist!)
–> keine Reaktion von ioBroker mehr, außer dem Zahnrad auf weißem Grund (also offenbar Pakete fließend, denn das Icon ist ja auch schon ioBroker), auf allen IP's des Servers identische Reaktion!
Reboot, FW ausschalten usw. bringen alle keine Änderung! Auch von anderem PC im LAN und anderen Browsern nur das Zahnrad!
Einzige Abhilfe: Neuinstallation ioBroker und ohne Umschaltung auf die exklusive IP weiterarbeiten!
2. die De-Installation von ioBroker geht in die Hose, vielleicht auch Ursache für anderes / o.g.?
Ursache: Pfad zu lang! Auch manuell auf dem Server ist kein Löschen oder Umbenennen möglich (Win Server 2012 R2 Standard), eindeutige Meldung dazu beim Versuch, das manuell zu tun!
Per remote Laufwerk von PC aus verbunden (Win 10 Version 1703) kann man es aber problemlos löschen. Nur ioBroker selbst und somit dessen Betrieb (!!) dürfte also Probleme haben, damit umzugehen!
Betroffener Pfad:
D:\ioBroker\node_modules\iobroker.js-controller\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\normalize-package-data\node_modules\validate-npm-package-license\node_modules\spdx-correct\node_modules\spdx-license-ids
Wichtig dabei:
in dem Verzeichnis gibt es (bei Betrieb) 4 Dateien. Die Deinstallation löscht die beiden mit den kürzesten Namen, die beiden anderen bleiben stehen. Offenbar ist hier wohl exakt die Grenze der als Pfad erlaubten Zeichen erreicht!
Muss das wirklich derartig lang sein?!
Unter meiner "Produktiv-Umgebung" (Win Server 2008 R2) kann (und will) ich diese beiden offenbar irreversiblen Fehler nicht nachstellen.
Evtl. dürften auch generell alle Win-8-PC-Installationen von ioBroker betroffen sein (WinServer 2012 ist de facto Win 8)? Mag nicht in gekachelter Umgebung leben und hab sowas als PC-OS nicht (mehr)
Viele Grüße bb61