Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie Daten in eine MySQL Datenbank schreiben

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

    #16
    Leider bei mir nicht reproduzierbar. Nachdem ich das Plugin für meine 2te DB konfiguriert habe, loggt er beim restart kurz ein
    "2018-12-23 15:51:27 ERROR root Can not execute query: SELECT MAX(version) FROM database_version; (args OrderedDict()): (1146, "Table 'smarthome2.database_version' doesn't exist") " --> Das ist aber so gewollt, danach wurden die Tabellen angelegt.

    Kommentar


      #17
      pymysql sollte die aktuelleste Version sein:

      Code:
       [smarthome@SmartHomeNG ../local/smarthome/logics]$ pip show pymysql
      Name: PyMySQL
      Version: 0.9.3
      Summary: Pure Python MySQL Driver
      Home-page: https://github.com/PyMySQL/PyMySQL/
      Author: yutaka.matsubara
      Author-email: yutaka.matsubara@gmail.com
      License: "MIT"
      Location: /usr/local/lib/python3.5/dist-packages
      Requires:
      Required-by:
      Und ja ich bin mir ziemlich sicher das kein Item mit database@ angelegt habe. Aber vor einigen Tagen habe ich einen Python SQL Connector installiert.

      Ich setze mir gleich mal ein frisches SmartHomeNG auf und werde mal versuchen das DB Plugin als erstes zum laufen zu bringen, bevor ich andere Dinge teste.

      VG Jannis

      Kommentar


        #18
        Ich vermute, dass es in lib/db.py (Klasse Database) bereits kracht... Eine Zeilenangabe würde mir halt schon vieles helfen..

        Kommentar


          #19
          hmm ich bin noch auf 0.9.2.. ich teste mal mit 0.9.3, evtl kannst du auf 0.9.2 testweise downgraden!

          Update: nein auch mit 0.9.3 legt er bei mir die Tabellen sauber an..

          Bist Du auf dem aktuellen Master? Sowohl für Plugin als auch Core? bzw auf dem neusten Stand des DEV (für beide)?
          Zuletzt geändert von psilo; 23.12.2018, 15:59.

          Kommentar


            #20
            Hier wird übrigens Deine Exception geworfen (direkt beim Versuch zu connecten): https://github.com/smarthomeNG/smart...ib/db.py#CL194

            Da könntest Du mal versuchen, mehr rauszukriegen!

            Kommentar


              #21
              Da ist der Fehler - hoffentlich auch der richtige :
              - 'passwd:12345'
              Probier mal -passwd:'12345' oder (wie bei mir) -passwd:12345. das erste ist yaml-technisch aber korrekter..

              Ich versuche das bei mir zu reproduzieren, evtl kann er nur die exception nicht vernuenftig loggen..

              Update: kriege es auch so nicht reproduziert.. kriege im connect vernuenftige fehler.. bitte checke mal, dass neben pymysql nicht auch mymysql3 (das alte) installiert ist

              und last but not least: testweise mal mit dem root - db - user versuchen zu connecten.

              Update2:
              Wenn das alles ncihts hilft, versuche mal das **self._params vor dieser Zeile rauszuloggen: https://github.com/smarthomeNG/smart...ib/db.py#CL192
              Zuletzt geändert von psilo; 23.12.2018, 16:17.

              Kommentar


                #22
                ACHJA: welche Version von ruamel.yaml ist bei Dir am Start??? ich vermute diese ist höher, als die maximal erlaubte..

                Im Master maximal 0.15.0, im DEV <= 0.15.74
                Zuletzt geändert von psilo; 23.12.2018, 16:20.

                Kommentar


                  #23
                  Danke für deine Mühe, psilo.

                  Wenn ich den Eintrag für das Passwort auf -passwd:'12345 ändere dann bekomme ich einen Syntax Fehler:

                  Code:
                  2018-12-23  16:22:54 ERROR    lib.plugin        Plugin 'database' from section 'database' exception: invalid syntax (<string>, line 1)
                  Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/plugin.py", line 129, in __init__
                      plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta, self._gtrans)
                    File "/usr/local/smarthome/lib/plugin.py", line 567, in __init__
                      exec("self.plugin.__init__(smarthome{0}{1})".format("," if len(arglist) else "", argstring))
                    File "<string>", line 1
                      self.plugin.__init__(smarthome,driver="pymysql",connect="['host:192.168.178.53', 'port:3307', 'user:smarthome_db', "passwd:'12345'", 'db:smarthome_db']")
                  Bei der Verwendung von -passwd:12345 ist der fehler wieder der alte.

                  Die ruamel.yaml ist die Version 0.15.0 - sollte also passen oder?

                  mymysql3??? sehe ich weder über pip noch über apt-get - MariaDB läuft bei mir auf einem NAS also nicht lokal. Wo soll das installiert sein? Auf dem Raspberry oder geht es um die MariaDB?

                  So ich muss erstmal pausieren & darf erst später weiter spielen, meine Frau scharrt mit den Hufen ;-)

                  Ich probier es nachher erstmal mit einer frischen Installation.

                  Kommentar


                    #24
                    Eintrag für das Passwort auf -passwd:'12345 ändere dann bekomme ich einen Syntax Fehler
                    Ja, weil Du den schliessenden ' vergessen hast: -passwd:'12345'

                    früher gab es via pip auch das paket pymysql3, das dann aber wegen pymysql (welches python3 kompatibel wurde) ausgelaufen ist.


                    Datenbank kann laufen wo Du willst.. In der Anleitung stand glaube ich drin, wie man die Beschränkung auf reine Localhost Zugriffe deaktiviert.. Mit Deinem Fehler hat das m.E. aber nichts zu tun.

                    Kommentar


                      #25
                      So, kurze Ergänzung, nach dem ich mir nun nochmal eine frische SmartHomeNG Version installiert habe, bekam ich denselben Fehler.
                      Dann hab ich Testweise mal versucht eine lokale (Maria DB auf dem Raspi) zu nutzen. Dies ging ohne Probleme.

                      Da ich die DB aber auf dem NAS haben möchte, ging die Fehlersuche weiter.

                      Nach dem ich eine DB über die Shell angelegt habe, konnte ich diese ohne Probleme einbinden. Die DB, welche ich über phpmyAdmin angelegt hatte, war wohl das Problem.

                      Nun läuft es erstmal

                      Viele Grüße Jannis

                      & allen frohe Weihnachten.

                      Kommentar


                        #26
                        startrix was für ein NAS? ich nehme die "standard" MariaDB (Version 10) meines Synology NAS, und dort eine Datembank, angelegt über PhpMyAdmin. Dort werden dann InnoDB Tabellen erstellt.. Da geht alles gut. Evtl liegts auch am Unterschied InnoDB vs MyISAM?!

                        Nur um das für die Zukunft evtl. auf das NAS einzugrenzen.. Ist das MariaDB das gleiche? Also ist der Unterschied nur, dass Du in dem gleichen MariaDB auf untersch. Weise DBs angelegt hast? PHPMyAdmin macht doch auch nur "create database xyz". Oder ist die Instanz des MariaDB eine andere? Hast Du vom Client versucht, ob Du via Shell auf die Datenbank auf dem NAS connecten kannst? Bei meinem Synology sind Zugriffe != localhost bspw. per Config deaktiviert. Ich greife aber aus einem Docker Container direkt auf das NAS zu.
                        Zuletzt geändert von psilo; 24.12.2018, 13:42.

                        Kommentar


                          #27
                          War das nicht einfach ein Rechteproblem, z.B. dass du dem User nur Select- und Write-Grants erteilt hast und nicht Create bzw. DB-Owner?

                          Kommentar


                            #28
                            Hey Ihr beiden,

                            auch an Weihnachten aktiv.

                            smai ich denke auch das es ein Problem mit den Rechten gab. Aber nachvollziehen kann ich es noch nicht. Denn der User smarthome_db hat doch sogar mehr Rechte als der User smarthome.

                            Berechtigung der DB welche über phpMyAdmin angelegt wurde (als User smarthome_db verwendet) funktionierte nicht:


                            Berechtigungen der DB welche über die Shell vom Raspi auf der DS angelegt wurden (als User smarthome verwendet) - funktioniert:


                            psilo MariaDB läuft auf einer Synology DS414 in der Version 10.3.7. Auf dem Raspi läuft es in der Version: 10.1.37-MariaDB-0+deb9u1 Raspbian 9.0.
                            Ausserdem Unterscheidet sich der TCP Port. Auf der DS 3307 und auf dem Raspi ist es 3306.

                            Vom Raspi auf die mySQL Shell der MariaDB vom NAS ging einwandfrei.

                            Viele Grüße
                            Jannis

                            Kommentar


                              #29
                              Das sind die globalen Privilegien, evtl. können diese auf DB-Ebene eingeschränkt werden.

                              Kommentar

                              Lädt...
                              X