Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

    Was soll denn instance in der PyMySQL-Connection deiner Meinung nach bedeuten bzw. bewirken? Ich finde diesen Parameter in der PyMySQL-Doku nicht.
    Die Fehlermeldung deutet ja ebenfalls darauf hin.

    Kommentar


      Hallo Stefan,

      wenn ich Dich richtig verstehe, gehört der Eintrag "instance...." nicht in die "plugin.yaml".

      Code:
      database:
          class_name: Database
          class_path: plugins.database
          driver: pymysql
          cycle: 30
          connect:
            - host:localhost
            - user:Smarthome
            - passwd:xxxxxx
      [MARKIEREN]      - instance:mysqldb[/MARKIEREN]
            - db:Smarthome
            - port:3306
      Den Sinn des Eintrags kann ich nicht deuten

      War fest der Überzeugung..... werde ich versuchen.

      Danke, JG
      Gruß, JG

      Kommentar


        So würde ich zumindest die Doku deuten. Bei MSSQL und Oracle können mehrere Instanzen per Namen auf demselben Port kontaktiert werden, bei MySQL wäre mir nichts derartiges bekannt.
        Woher kommst du denn zu deiner Überzeugung, irgendwo musst du ja dann wohl etwas derartiges gelesen haben?

        Kommentar


          War sogar ein Beitrag von Dir....
          https://knx-user-forum.de/forum/supp...l-sqlite/page4

          Der ist jetzt weg, aber dafür ein neuer da.....
          Code:
          019-01-24  00:29:51 ERROR    root              Database [Database]: Could not connect to the database: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Verbindungsaufbau abgelehnt)")
          2019-01-24  00:29:51 ERROR    plugins.database  Database: initialization failed: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Verbindungsaufbau abgelehnt)")
          Gruß, JG

          Kommentar




            Zu meiner Verteidigung möchte ich anfügen, dass ich damals nicht den Inhalt der Konfiguration von pino geprüft hatte sondern nur die Form.
            Da war ein instance drin, also hatte ich das Leerzeichen bemängelt. Dass da gar kein Instance hingehört, hatte ich allerdings nicht beachtet.

            Du solltest aber auch nicht einfach Konfigurationen anderer Benutzer kopieren, sondern Dokus konsultieren und wissen, was du tust.
            Nur du kannst wissen, wie und wo dein Datenbankserver installiert ist.

            Zu deinem Problem: Offensichtlich horcht auf dem SHNG-Server keine MySQL-Instanz auf dem Port 3306 oder sie akzeptiert keine Verbindungen von localhost.
            Also gilt wieder: Du musst wissen, wie und wo du den MySQL-Server (oder evtl. MariaSQL) betreibst und ob dieser auch gestartet ist.

            Kommentar


              Du brauchst nix verteidigen.... ( ist schon meine Schuld, aber mir fehlt der Plan )

              Die DB kann ich so über den Browser aufrufen:
              http://192.168.178.234/phpMyAdmin/db...1&db=Smarthome

              ( die DB Smarthome, hab ich manuell - mit User "Smarthome" angelegt )
              Zuletzt geändert von Haiphong; 24.01.2019, 00:58.
              Gruß, JG

              Kommentar


                192.168.178.234 ist die IP deines SHNG-Servers?
                phpMyAdmin hat ja nichts mit dem MySQL-Server zu tun, sondern ist auch nur ein Client davon. Was hast du denn dort für Einstellungen vorgenommen? Dieselben müssten ja auch in SHNG funktionieren.

                Kommentar


                  Nur noch so als Frage:

                  Eigentlich ist dieser Treiber gefordert
                  $ python3 -m pip install PyMySQ

                  ich habe aber nur diesen:
                  y26-mysql - 1.2.3c1-1 - MySQL support for Python Wird das so nicht laufen ??
                  Gruß, JG

                  Kommentar


                    Da habe ich keine Ahnung.
                    Aber die Fehlermeldung sagt klar, dass der Server die Verbindung ablehnt. Das deutet erstmal nicht darauf hin, dass ein falscher Treiber schuld ist.

                    Kommentar


                      So scheint es richtig zu sein ( localhost bringt Fehler siehe # 199, SH auf Raspi und DB auf QNAP )
                      Code:
                      database:
                          class_name: Database
                          class_path: plugins.database
                          driver: pymysql
                          cycle: 30
                      [MARKIEREN]    instance: mysqldb[/MARKIEREN]
                          connect:
                            - host:192.168.178.234
                            - user:Smarthome
                            - passwd:ich
                            - db:Smarthome
                            - port:3306
                      Irgenwie läufts aber doch nicht
                      Code:
                      2019-01-24  02:10:09 ERROR    root              Database [Database]: Could not connect to the database: (1045, "Access denied for user 'Smarthome'@'SmartHomeNG.fritz.box' (using password: YES)")
                      2019-01-24  02:10:09 ERROR    plugins.database  Database: initialization failed: (1045, "Access denied for user 'Smarthome'@'SmartHomeNG.fritz.box' (using password: YES)")
                      Gruß, JG

                      Kommentar


                        und wieder ein Schritt weiter, Verbindung ist da ( Hostname in "phpMyAdmin geändert )

                        phpadmin.jpg
                        und der nächste Fehler ist auch schon da

                        Code:
                        2019-01-24  02:22:39 ERROR    plugins.database  Database: initialization failed: (1045, "Access denied for user 'Smarthome'@'SmartHomeNG.fritz.box' (using password: YES)")
                        2019-01-24  02:23:09 ERROR    root              Can not execute query: SELECT MAX(version) FROM database_version; (args OrderedDict()): (1146, "Table 'Smarthome.database_version' doesn't exist")
                        aber es wurde was in die DB geschrieben:

                        db.jpg
                        Zuletzt geändert von Haiphong; 24.01.2019, 02:37.
                        Gruß, JG

                        Kommentar


                          Haiphong bist du der anleitung aus dem blog gefolgt? dann müsstest du mit pip pymysql installiert haben?! wieso gibt es das bei dir nicht?

                          geht der connect via shell?

                          Kommentar


                            "Access denied for user 'Smarthome'@'SmartHomeNG.fritz.box' (using password: YES)"
                            Ist ja wieder ziemlich eindeutig: Der User hat keine rechte auf die Datenbank.
                            Schau mal in das Register "Rechte" in phpMyAdmin. Er braucht sicherlich mindestens INSERT, SELECT, DELETE, UPDATE.

                            Falls jemand anderes das hier mal liest:
                            Wenn man die Datenbankobjekte nicht vorher manuell angelegt hat, würde dies das Plugin tun. Dazu braucht es mindestens noch CREATE.

                            Im selbst betreuten Heimnetz kann man aber IMHO auch getrost ALL PRIVILEGES geben.

                            Dass das Plugin nach diesem Fehler trotzdem ein Select versucht, ist eigentlich falsch.

                            Kommentar


                              Ich meine das Problem hatte schon jemand hier im Forum.

                              Wenn ich das richtig erinnere, muss connect ein String sein. So wie es in der Konfiguration steht, ist das aber eine Liste von Strings. Schreib mal die ganzen -Optionen auf eine Zeile und setze sie in Anführungszeichen.
                              Viele Grüße
                              Martin

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

                              Kommentar


                                Meines Wissens passt die Liste schon so wie sie ist.
                                In database/__init__.py wird Utils.string_to_list verwendet, und da hast du selbst implementiert, dass eine Liste direkt wieder als Liste zurückkommt.

                                Entscheidend ist aber, dass es eine Liste von Strings ist und nach den Doppelpunkten kein Leerzeichen stehen darf.
                                Sonst wird es in YAML als eine Liste von dicts interpretiert. Aber auch Anführungszeichen helfen nicht, weil in lib/db.py ein Partition nach   :  ohne Trim geschieht.

                                Kommentar

                                Lädt...
                                X