Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Nach der gestrigen Neuinstallation sieht es soweit ganz gut aus - nur die Datenbank will noch nicht.

    2023-07-11 12:19:41 ERROR lib.db Can not execute query: INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (?,?,?,?,?,?,?); (args [98, 1689070706814, None, -14195.7, 1, 30460, 1689070781185]): attempt to write a readonly database
    2023-07-11 12:19:41 ERROR plugins.database Database: Error for query INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (98,1689070706814,None,-14195.7,1,30460,1689070781185);: attempt to write a readonly database
    2023-07-11 12:19:41 WARNING plugins.database Problem dumping ITEMXYZ: attempt to write a readonly database​

    WARNING plugins.database Problem dumping ITEMXYZ: attempt to write a readonly database​

    Ich denke Ihr wisst bestimmt wie das behoben werden kann, liegt es an den "Rechten der Datei"? --> "chmod rw" oder so ähnlich?

    Danke

    Kommentar


      Zitat von Maexle Beitrag anzeigen
      Ich denke Ihr wisst bestimmt wie das behoben werden kann, liegt es an den "Rechten der Datei"?
      Das klingt erstmal so.

      Die Datenbank Datei liegt im Verzeichnis ../var/db uns sollte dem User smarthome gehören (mit sudo chown setzen) und mindestens die Rechte für den User haben (mit chmod setzen)

      Außerdem ist wichtig, dass die Datenbank konsistent ist. Dazu MUSS SmartHomeNG beendet werden, bevor Du die Datenbankdatei kopierst.

      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        Danke Martin,



        so bin ich vorgegangen, bestimmt nicht elegant, aber es hat funktioniert:

        Code:
        /usr/local/smarthome/var/db
        ls
        -rw-rw-r-- 1 pi pi 560M 25. Jun 04:50 smarthomeng.db
        
        
         sudo systemctl stop smarthome.service
        
        sudo chmod 760 smarthomeng.db
        
         sudo chown smarthome smarthomeng.db
        
        ls
        
        -rwxrw---- 1 smarthome pi 560M 25. Jun 04:50 smarthomeng.db*​

        Kommentar


          Hallo

          ich bin am Update meines smarthome server (auf debian bookworm) und bekomme die Anbindung an mysql nicht zum laufen. Weder mit mysql noch mit mariadb. Fehler: Database [Database]: Could not connect to the database using 'pymysql': object supporting the buffer API required

          ​Gab es hier im Thread auch schon...jedoch ohne Lösung. Ich weiß das es nicht an pymysql liegt (test standalone funktioniert). Jemand eine Idee?

          Gruss, Micha

          Kommentar


            Welche Python Bersion nutzt Du? Mit Bookworm kommt standardmäßig Python 3.11. Das wird von SmarHomeNG noch nicht unterstützt. Mit Python 3.11 gab es auch schon andere Probleme, die mit einem Wechsel auf eine unterstützte Python Version weg waren.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              Ändert leider nix. Ich habe 3.11, 3.10 und 3.9 getestet. Immer das gleiche. Auch alle DEBUG Meldungen bringen mich nicht weiter. Die Exception kommt in Zeile 208 in der db.py

              Im log gibt es nur noch:

              Code:
              Traceback (most recent call last):
                File "/usr/local/smarthome/lib/plugin.py", line 703, in run
                  self.plugin.run()
                File "/usr/local/smarthome/plugins/database/__init__.py", line 180, in run
                  self.build_orphanlist(True)
                File "/usr/local/smarthome/plugins/database/__init__.py", line 920, in build_orphanlist
                  cur.close()
              AttributeError: 'NoneType' object has no attribute 'close'
              
              ​
              nicht hilfreich

              Kommentar


                Ich bin einen Schritt weiter. Bei der direkten Angabe innerhalb der db.py (Zeile 208) funktioniert die DB Anbindung:

                self._conn = self._dbapi.connect(host='localhost', user='user', password='password', db='smarthome_db')

                Jedoch kommt auf der webinterface Seite (/plugin/database_mysqldb/) einfach nur ein Error 500 The server encountered an unexpected condition which prevented it from fulfilling the request. Innerhalb der logs finde ich nichts. Wie komme ich an die Fehlermeldung?






                Kommentar


                  Fehlermeldung gefunden:

                  Code:
                  023-09-01  08:58:30 ERROR    cherrypy.error.140388930309904 [01/Sep/2023:08:58:30] HTTP
                  Traceback (most recent call last):
                    File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 638, in respond
                      self._do_respond(path_info)
                    File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 697, in _do_respond
                      response.body = self.handler()
                    File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/lib/encoding.py", line 223, in __call__
                      self.body = self.oldhandler(*args, **kwargs)
                    File "/home/smarthome/.local/lib/python3.10/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
                      return self.callable(*self.args, **self.kwargs)
                    File "/usr/local/smarthome/plugins/database/webif/__init__.py", line 127, in index
                      return tmpl.render(p=self.plugin,
                    File "/home/smarthome/.local/lib/python3.10/site-packages/jinja2/environment.py", line 1301, in render
                      self.environment.handle_exception()
                    File "/home/smarthome/.local/lib/python3.10/site-packages/jinja2/environment.py", line 936, in handle_exception
                      raise rewrite_traceback_stack(source=source)
                    File "/usr/local/smarthome/plugins/database/webif/templates/index.html", line 159, in top-level template code
                      {% set tab3title = _('Verwaiste Items') %}
                    File "/usr/local/smarthome/plugins/database/webif/templates/base_database.html", line 174, in top-level template code
                      {% set tab2title = _('Plugin-API') %}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 271, in top-level template code
                      {% if scroll_heading is not defined %}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 1, in top-level template code
                      {% block doc -%}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 4, in block 'doc'
                      {%- block html %}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 96, in block 'html'
                      {% block body -%}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 99, in block 'body'
                      {% block content -%}
                    File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 124, in block 'content'
                      {% block headtable %}
                    File "/usr/local/smarthome/plugins/database/webif/templates/base_database.html", line 160, in block 'headtable'
                      <td class="py-1"><strong>{{ key }}</strong></td><td class="py-1" onclick="document.getElementById('pwd').innerHTML = '{{ value }}'"><span id="pwd" title="Click to show password">{% for letter in value %}*{% endfor %}</span></td>
                  TypeError: 'int' object is not iterable
                  
                  ​
                  Zuletzt geändert von lexxmm; 01.09.2023, 08:20.

                  Kommentar


                    Fehler gefunden!!! Entweder ist es ein Bug oder falls nicht, sollte es unbedingt mit in die Doku! Als DB Passwort dürfen KEINE reinen Zahlen verwendet werden!!! Wenn das Passwort mit einem Buchstaben beginnt, klappt es. Reine Zahlen führen zu:
                    Code:
                    Database: Initialization failed: object supporting the buffer API required
                    Gruss,Micha

                    PS: Hat mich >12Stunden und echt Nerven gekostet

                    Kommentar


                      Wie hast Du denn das Plugin in der plugin.yaml genau konfiguriert? Das hast Du bisher leider nicht verraten.
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


                        Zitat von Msinn Beitrag anzeigen
                        Wie hast Du denn das Plugin in der plugin.yaml genau konfiguriert? Das hast Du bisher leider nicht verraten.
                        wie in der Doku

                        Code:
                        database_mysql:
                            plugin_name: database
                            instance: mysqldb
                            precision: 4
                            driver: pymysql
                            connect:
                            -   host:127.0.0.1
                            -   user:user
                            -   passwd:pass
                            -   db:smarthome_db
                        
                        ​
                        passwd bestand vorher aus Zahlen und das führt zu dem Fehler. egal ob mit ' oder ohne '

                        Kommentar


                          Ok, das sieht soweit gut aus. Ich fragte wegen eines häufigen Fehlers, in den connect Einträgen hinter dem Doppelpunkt ein Leerzeichen zu lassen. Das führt nämlich zu den seltsamsten Fehlern.

                          Ansonsten müsste nun jemand der MySQL nutzt etwas dazu sagen. Ich selbst habe SmartHomeNG nie mit einer anderen Datenbank als Sqlite3 betrieben.
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            Soll ich das mal über github melden oder lesen die Jungs hier mit?

                            Kommentar


                              Normalerweise lesen hier mehr mit als auf github. Du kannst aber trotzdem einen Issue auf github aufmachen (im Plugins Repo), dann geht das nicht verloren.
                              Viele Grüße
                              Martin

                              There is no cloud. It's only someone else's computer.

                              Kommentar


                                Hallo,

                                ich habe ein Problem mit dem database-Plugin und hoffe auf Eure Hilfe.

                                In unregelmäßigen Abständen (alle 2-3 Tage, manchmal auch mehrfach am Tag) tritt ein solcher Fehler auf.
                                Hier mal der Verlauf von heute:

                                Erste Fehlermeldung:
                                Code:
                                2023-09-25  00:26:27 ERROR    lib.db                                   Can not execute query: SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = %(id)s; (args OrderedDict([('id', 'steckdosen.ug.waschkueche.waschmaschine.stromwert')])): Packet sequence number wrong - got 1 expected 2
                                2023-09-25  00:26:27 ERROR    plugins.database                         Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = steckdosen.ug.waschkueche.waschmaschine.stromwert;: Packet sequence number wrong - got 1 expected 2
                                2023-09-25  00:26:27 WARNING  plugins.database                         id(): No id found for item steckdosen.ug.waschkueche.waschmaschine.stromwert - Exception Packet sequence number wrong - got 1 expected 2
                                2023-09-25  00:26:27 ERROR    lib.db                                   Can not execute query: SELECT MAX(id) FROM item; (args OrderedDict()): (0, '')
                                2023-09-25  00:26:27 ERROR    plugins.database                         Database: Error for query SELECT MAX(id) FROM item;: (0, '')
                                2023-09-25  00:26:27 WARNING  plugins.database                         Problem dumping steckdosen.ug.waschkueche.waschmaschine.stromwert: (0, '')
                                2023-09-25  00:26:27 WARNING  plugins.database                         Error rolling back: (0, '')
                                2023-09-25  00:26:27 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
                                2023-09-25  00:26:27 WARNING  lib.db                                   Database [Database]: Connection error (0, '')
                                2023-09-25  00:26:27 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()​
                                und dann fortlaufend:
                                Code:
                                2023-09-25  00:27:43 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
                                2023-09-25  00:29:15 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected​


                                Die Datenbank ist nicht mehr verbunden und es werden somit auch keine Werte mehr geschrieben.

                                Der Fehlermeldungen vom 22.09:
                                Erste Fehlermeldung:
                                Code:
                                2023-09-22 04:07:12 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
                                2023-09-22 04:07:12 WARNING lib.db Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
                                2023-09-22 04:07:12 WARNING lib.db fetchone: No cursor defined for stmt SELECT 1 with params ()
                                2023-09-22 04:07:15 NOTICE plugins.database Skipping dump, since an other database operation running! Data is buffered and dumped later.​​
                                dann
                                Code:
                                2023-09-22 18:19:24 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
                                2023-09-22 18:19:24 WARNING lib.db Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
                                2023-09-22 18:19:24 WARNING lib.db fetchone: No cursor defined for stmt SELECT 1 with params ()
                                2023-09-22 18:19:43 NOTICE plugins.database Skipping dump, since an other database operation running! Data is buffered and dumped later.
                                2023-09-22 18:19:49 NOTICE plugins.database Dumping buffered data from skipped dump(s).
                                2023-09-22 18:19:58 WARNING plugins.avm fritzbox_7530@: Setting AVM Device defined in Item=avm.smarthome.hkr_og_bad.target_temperature with avm_data_type=target_temperature to value=7.0 FAILED!
                                2023-09-22 18:20:00 WARNING plugins.db_addon no valid data from database query received during _prepare_value_list. Aborting...
                                2023-09-22 18:21:53 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
                                2023-09-22 18:21:53 WARNING lib.db Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
                                2023-09-22 18:21:53 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
                                2023-09-22 18:21:53 WARNING lib.db Database [Database]: Connection error (0, '')
                                2023-09-22 18:24:14 WARNING plugins.db_addon no valid data from database query received during _prepare_value_list. Aborting...
                                2023-09-22 18:24:15 ERROR lib.db Can not execute query: DELETE FROM log WHERE item_id = %(id)s ORDER BY time ASC LIMIT %(maxrecords)s; (args OrderedDict([('id', 301), ('maxrecords', 20000)])): 'NoneType' object has no attribute 'read'
                                2023-09-22 18:24:15 ERROR lib.db Can not execute query: SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = %(id)s; (args OrderedDict([('id', 'wetter.froggit.pressure.pressure_abs')])): Packet sequence number wrong - got 102 expected 3
                                2023-09-22 18:24:15 ERROR plugins.database Database: Error for query DELETE FROM log WHERE item_id = 301 ORDER BY time ASC LIMIT 20000;: 'NoneType' object has no attribute 'read'
                                2023-09-22 18:24:15 ERROR plugins.database Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = wetter.froggit.pressure.pressure_abs;: Packet sequence number wrong - got 102 expected 3
                                2023-09-22 18:24:15 ERROR lib.scheduler.tasks Method plugins.database.Remove old exception: 'NoneType' object has no attribute 'read'
                                Traceback (most recent call last):
                                File "/usr/local/smarthome/lib/scheduler.py", line 707, in _task
                                obj()
                                File "/usr/local/smarthome/plugins/database/__init__.py", line 1595, in remove_older_than_maxage
                                self._execute(self._prepare("DELETE FROM {log} WHERE item_id = :id ORDER BY time ASC LIMIT :maxrecords;"), {'id': item_id, 'maxrecords': self.max_delete_logentries}, cur=cur)
                                File "/usr/local/smarthome/plugins/database/__init__.py", line 1727, in _execute
                                self._query(self._db.execute, query, params, cur)
                                File "/usr/local/smarthome/plugins/database/__init__.py", line 1757, in _query
                                raise e
                                File "/usr/local/smarthome/plugins/database/__init__.py", line 1754, in _query
                                tuples = func(self._prepare(query), params, cur=cur)
                                File "/usr/local/smarthome/lib/db.py", line 332, in execute
                                result = cur.execute(stmt, args)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/cursors.py", line 158, in execute
                                result = self._query(query)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/cursors.py", line 325, in _query
                                conn.query(q)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 549, in query
                                self._affected_rows = self._read_query_result(unbuffered=unbuffered)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 779, in _read_query_result
                                result.read()
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 1164, in read
                                self._read_result_packet(first_packet)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 1239, in _read_result_packet
                                self._get_descriptions()
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 1311, in _get_descriptions
                                field = self.connection._read_packet(FieldDescriptorPacket)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 715, in _read_packet
                                recv_data = self._read_bytes(bytes_to_read)
                                File "/home/smarthome/.local/lib/python3.9/site-packages/pymysql/connections.py", line 736, in _read_bytes
                                data = self._rfile.read(num_bytes)
                                AttributeError: 'NoneType' object has no attribute 'read'
                                2023-09-22 18:24:15 WARNING plugins.database id(): No id found for item wetter.froggit.pressure.pressure_abs - Exception Packet sequence number wrong - got 102 expected 3
                                2023-09-22 18:24:15 ERROR lib.db Can not execute query: SELECT MAX(id) FROM item; (args OrderedDict()): (0, '')
                                2023-09-22 18:24:15 ERROR plugins.database Database: Error for query SELECT MAX(id) FROM item;: (0, '')
                                2023-09-22 18:24:15 WARNING plugins.database Problem dumping wetter.froggit.pressure.pressure_abs: (0, '')
                                2023-09-22 18:24:15 WARNING plugins.database Error rolling back: (0, '')
                                2023-09-22 18:24:15 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
                                2023-09-22 18:24:15 WARNING lib.db Database [Database]: Connection error (0, '')​​
                                und dann wieder fortlaufend:
                                Code:
                                2023-09-22 19:22:22 ERROR lib.db Can not execute query: SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = %(id)s; (args OrderedDict([('id', 'heizung.kessel.kesseltemperatur_ist')])): Packet sequence number wrong - got 1 expected 2
                                2023-09-22 19:22:22 ERROR plugins.database Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = heizung.kessel.kesseltemperatur_ist;: Packet sequence number wrong - got 1 expected 2
                                2023-09-22 19:22:22 WARNING plugins.database id(): No id found for item heizung.kessel.kesseltemperatur_ist - Exception Packet sequence number wrong - got 1 expected 2
                                2023-09-22 19:22:22 ERROR lib.db Can not execute query: SELECT MAX(id) FROM item; (args OrderedDict()): (0, '')
                                2023-09-22 19:22:22 ERROR plugins.database Database: Error for query SELECT MAX(id) FROM item;: (0, '')
                                2023-09-22 19:22:22 WARNING plugins.database Problem dumping heizung.kessel.kesseltemperatur_ist: (0, '')
                                2023-09-22 19:22:22 WARNING plugins.database Error rolling back: (0, '')
                                2023-09-22 19:22:22 ERROR lib.db Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
                                2023-09-22 19:22:22 WARNING lib.db Database [Database]: Connection error (0, '')
                                2023-09-22 19:22:22 WARNING lib.db fetchone: No cursor defined for stmt SELECT 1 with params ()
                                2023-09-22 19:23:33 WARNING plugins.database remove_older_than_maxage skipped because db is not connected
                                2023-09-22 19:24:22 NOTICE plugins.database Skipping dump, since an other database operation running! Data is buffered and dumped later.​​
                                Der shNG Core ist das aktuelle develop.
                                Der database Plugin ist 1.6.11
                                Ich nutze eine mysql bzw. mariadb.

                                Kann jemand was zu dem Fehler sagen?
                                Wenn das Plugin merkt, dass die DB nicht verbunden ist, warum erfolgt kein reconnect?

                                Danke Euch.

                                Kommentar

                                Lädt...
                                X