Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MYSQL Profis unter uns?

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    MYSQL Profis unter uns?

    This topic has been deleted. Only users with topic management privileges can see it.
    • AxelF1977
      AxelF1977 last edited by

      Moin,

      vielleicht kann mich unter uns jemand durch die Lösung meiner Frage leiten.

      Eine meiner Tabellen war abgeschmiert und meldete einen Fehler. Da ich zu dem Zeitpunkt weder Zeit noch Muse hatte diese zu reparieren, habe ich einfach eine neue angelegt, in die der SQL Adapter fleißig die Daten schreibt.

      Datenbank MARIADB auf einem Raspi.

      Nun möchte ich die Datenbanken zusammenführen, damit es wieder eine ist, und ich die Daten der letzten 12 Monate auswerten kann.

      Wie kann ich das bewerkstelligen?

      Danke und einen schönen Tag

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @AxelF1977 last edited by

        @AxelF1977

        Wenn beide Tabellen in der gleichen Datenbank sind, dann mit einem
        INSERT INTO ... SELECT
        Befehl
        https://mariadb.com/kb/en/adding-and-changing-data-in-mariadb/#contingent-additions

        AxelF1977 1 Reply Last reply Reply Quote 0
        • AxelF1977
          AxelF1977 @OliverIO last edited by AxelF1977

          @OliverIO sagte in MYSQL Profis unter uns?:

          @AxelF1977

          Wenn beide Tabellen in der gleichen Datenbank sind, dann mit einem
          INSERT INTO ... SELECT
          Befehl
          https://mariadb.com/kb/en/adding-and-changing-data-in-mariadb/#contingent-additions

          Guten morgen,

          und danke für die schnelle Antwort.

          Es sind 2 verschiedene Datenbanken

          iobrokerdb_1
          iobrokerdb_2

          Alle Tabellen sind also doppelt vorhanden. Die fortlaufenden id´s der neuen Tabelle beginnen wieder bei 1. Die der alten enden irgendwo bei 4000000. Gibt es da Probleme wegen einer Doppelung der Ids?

          Ich würde gerne eine iobroker db_3 anlegen, und dann beide Datenbanken in die neue Zusammenführen. Vorallem um Datenverlust zu vermeiden. Backups werden vorher trotzdem erstellt.

          a200 1 Reply Last reply Reply Quote -1
          • a200
            a200 @AxelF1977 last edited by

            @AxelF1977 du wirst wahrscheinlich beide Tabellen aus beiden DBs auslesen müssen, die nach ts sortieren und in eine dritte Tabelle mit neuen ids schreiben müssen. Ohne jetzt ins Detail zu gehen, wäre das meine Strategie.

            AxelF1977 1 Reply Last reply Reply Quote 0
            • AxelF1977
              AxelF1977 @a200 last edited by

              @a200 sagte in MYSQL Profis unter uns?:

              @AxelF1977 du wirst wahrscheinlich beide Tabellen aus beiden DBs auslesen müssen, die nach ts sortieren und in eine dritte Tabelle mit neuen ids schreiben müssen. Ohne jetzt ins Detail zu gehen, wäre das meine Strategie.

              Klingt erstmal logisch. Ich muss nur gucken wie ich das mache. Da die "alte" Datenbank über 6GB groß ist, muss ich das alles über die Konsole machen. Denn über MYSQL komme ich bei der Größe nicht mehr weit...

              Hier fehlt mir mir nun nämlich genau die Erfahrung. Da habe ich keinen blassen schimmer wie ich das machen kann. WIe ich die Tabellen über die Konsole sichere weiß ich, das bekomme ich hin, aber wie ich die dann gezielt wieder mit neuen Ids in die neue Datenbank schiebe über die Konsole, das weiß ich nicht.

              Zumal ich ja den anderen Tabellen die neuen Ids der Tabelle z.B. ts_numbers auch mitteilen muss, oder?

              a200 1 Reply Last reply Reply Quote 0
              • U
                UlliJ last edited by

                Moin, schau Dir mal HeidiSQL oder Dbeaver an. Erleichtert den Überblick und zumindest bei Dbeaver kannst Du zwischen DB‘s Daten hin und her schieben.
                Gruß
                Ulli

                1 Reply Last reply Reply Quote 0
                • a200
                  a200 @AxelF1977 last edited by

                  @AxelF1977

                  1. Daten aus einer DB in die zweite DB mit anderen Tabellennamen kopieren.

                  INSERT INTO DB1.TABLE1 SELECT * FROM DB2.TABLE1;

                  1. schau dir mal das hier an: https://stackoverflow.com/questions/16117306/combine-two-mysql-table-with-same-column-name
                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO last edited by

                    stehen diese tabellen für sich? oder hat diese noch eine datenrelation zu einer anderen tabelle.
                    wenn ja, dann musst du mit den ids aufpassen, da ja dann die relation in der anderen datenbank nicht mehr passt.

                    wenn nein, dann kannst du die daten in dern neuen tabelle:
                    a) wenn die spalte für ids nicht mit dem unique kenner angelegt wurde einfach einfügen.
                    b) wenn die id spalte mit unique kenner, dann entwender ohne id einfügen so dass die id neu vergeben wird oder neu nummerieren.

                    aber erst einmal mit alternative a probieren.
                    eine Oberfläche wie heidiSQL ist auf jeden fall hilfreich, da es dir das nachschlagen einiger befehle für die console erspart.

                    1 Reply Last reply Reply Quote 0
                    • AxelF1977
                      AxelF1977 last edited by

                      Ok, dann hab ich viel zu lesen.

                      Ich hatte auch überlegt alles in eine Influx Datenbank umzuziehen, geht das evtl. einher mit der Migration der Datenbanken? Evtl. kann ich mir so gleich einen Überblick verschaffen.

                      Ich stelle hier nach der Arbeit Screenshots ein, dann kann ich es besser erklären.

                      Vielen Dank für die vielen Antworten 👍

                      1 Reply Last reply Reply Quote 0
                      • AxelF1977
                        AxelF1977 last edited by

                        So sieht die ganze Geschichte aus. Bevor ich es falsch beschreibe, sagt Euch der Screenshot bestimmt mehr.

                        c0fa77a9-faf1-4075-a2b1-bba5da1b3f31-image.png

                        Zusammengefügt werden sollen die Datenbanken ...maticdb und ..maticdb_02. Wobei ...maticdb_02 in ...maticdb eingefügt werden soll

                        Wobei wohl nur die Tabellen mit ts_ hinzugefügt werden müssen. Bei allen anderen hat sich nichts geändert. Diese haben, soweit ich es sehe, keine eindeutige id, sondern dieses ts, was wohl ein Zeitstempel ist?

                        5d08a1fd-db87-4de8-98cb-3bf95f279dc3-image.png

                        Was dans ganze sicherlich einfacher macht, denke ich

                        1 Reply Last reply Reply Quote 0
                        • D
                          Daddeldu last edited by

                          ts ist der UNIXTIMESTAMP, ein Wert in Sekunden seit 00:00:00 am 01.01.1970

                          kannst Du hier online checken: https://www.epochconverter.com

                          Solange nicht mehrere Werte innerhalb einer Sekunde in die Tabelle eingetragen werden, ist ts eindeutig.

                          AxelF1977 1 Reply Last reply Reply Quote 0
                          • AxelF1977
                            AxelF1977 @Daddeldu last edited by

                            @Daddeldu Danke, Unixtime, genau das war es.

                            Habe jetzt mal eine 3. Datenbank angelegt, die Struktur der alten kopiert und fülle sie jetzt. Scheint zu finktionieren

                            ALTER TABLE ...maticdb_03.ts_number DISABLE KEYS;
                            INSERT INTO ...maticdb_03.ts_number SELECT * FROM ...maticdb.ts_number;
                            ALTER TABLE ...maticdb_03.ts_number ENABLE KEYS;
                            

                            Jedenfalls gab es keinen Fehler und zu den ursprünglichen 190308147 Einträgen wurden 102398438 Einträge hinzugefügt.

                            Danke Euch

                            1 Reply Last reply Reply Quote 0
                            • AxelF1977
                              AxelF1977 last edited by AxelF1977

                              Nun kommen aber die Fehler...

                              sobald ich einen Zeitraum auswähle der länger zurück liegt, z.B. November 2019, bekomme ich einen #1040 - Too many connections Fehler und komme erst weider in phpMyAdmin rein, wenn ich die mysql Instanz stoppe.

                              1 Reply Last reply Reply Quote 0
                              • D
                                Daddeldu last edited by Daddeldu

                                Google findet Treffer ohne Ende zu dem Fehler...

                                https://stackoverflow.com/questions/730953/how-to-fix-mysql-connect-too-many-connections

                                oder auch

                                https://minervadb.com/index.php/2020/02/03/how-mysql-handles-connection-troubleshooting-mysql-error-1040-too-many-connections/

                                Hängt wahrscheinlich mit der Checkbox“Parallelanfragen erlauben“ im Adapter zusammen. Standard sind laut der Links oben max 151 Verbindungen gleichzeitig.

                                AxelF1977 1 Reply Last reply Reply Quote 0
                                • AxelF1977
                                  AxelF1977 @Daddeldu last edited by

                                  @Daddeldu sagte in MYSQL Profis unter uns?:

                                  Google findet Treffer ohne Ende zu dem Fehler...

                                  https://stackoverflow.com/questions/730953/how-to-fix-mysql-connect-too-many-connections

                                  oder auch

                                  https://minervadb.com/index.php/2020/02/03/how-mysql-handles-connection-troubleshooting-mysql-error-1040-too-many-connections/

                                  Hängt wahrscheinlich mit der Checkbox“Parallelanfragen erlauben“ im Adapter zusammen. Standard sind laut der Links oben max 151 Verbindungen gleichzeitig.

                                  Ja, da bin ich dran mich durch Google zu kämpfen. Da gibt es so viele verschiedene Möglichkeiten.

                                  Größtes Problem gerade, ich weiß das Passwort des root user nicht 🤔

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    Daddeldu last edited by

                                    Ich würde auch mal nen select count auf einen bestimmten Zeitraum machen, um zu sehen, wieviele Datensätze da kommen um den dann irgendwie sinnvoll zu begrenzen. Ob das nötig ist weiß ich zwar nicht, aber bei zig 1000 Datensätzen könnte es irgendwann eng werden.
                                    Vom MySQL-Server oder vom Raspi/Tinkerboard? Kannst Du doch notfalls beides zurücksetzen.

                                    AxelF1977 1 Reply Last reply Reply Quote 0
                                    • AxelF1977
                                      AxelF1977 @Daddeldu last edited by AxelF1977

                                      @Daddeldu sagte in MYSQL Profis unter uns?:

                                      Ich würde auch mal nen select count auf einen bestimmten Zeitraum machen, um zu sehen, wieviele Datensätze da kommen um den dann irgendwie sinnvoll zu begrenzen. Ob das nötig ist weiß ich zwar nicht, aber bei zig 1000 Datensätzen könnte es irgendwann eng werden.
                                      Vom MySQL-Server oder vom Raspi/Tinkerboard? Kannst Du doch notfalls beides zurücksetzen.

                                      Irgendwie geht gar nichts, alles was ich im Netz finde, bewirkt entweder nichts, oder es fehlen die root Rechte, wo ich das Passwort nicht habe.

                                      Die Tipps, wie ich das root Passwort von MYSQL zurück setze, funktionieren irgendwie auch alle nicht.

                                      Wahrscheinlich stelle ich mich zu dumm an...

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Daddeldu last edited by

                                        Erstmal mysql stoppen, siehe 2. hier unter diesem Link:

                                        https://tableplus.com/blog/2018/10/how-to-start-stop-restart-mysql-server.html

                                        danach ohne Anmeldedaten starten und Passwort zurücksetzen:

                                        https://www.patrick-gotthard.de/mysql-root-passwort-zuruecksetzen

                                        und zum Schluß wieder starten und mit neuem root-pow anmelden

                                        1 Reply Last reply Reply Quote 0
                                        • AxelF1977
                                          AxelF1977 last edited by

                                          Ich habe mir mal gerade die Unix Timestamps angesehen, ich denke hier liegt das Problem

                                          1539144518784: Realzeit: 20.07.50743 - 17:06:24

                                          Kann der Fehler daher kommen? Ich habe jetzt mal 20 Werte wild aus der alten DB probiert, von der ersten bis zur letzten Seite, die sind alle Murks

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            Daddeldu last edited by Daddeldu

                                            Dieser Zeitstempel ist vom 10. Oktober 2018 und beinhaltet Millisekunden.

                                            1539144518784 Wobei die 784 die Millisekunden sind. Laß die 3 Stellen weg und teste nur die 1539144518 dann siehst Du es.

                                            Die alte DB beinhaltet wahrscheinlich Millisekunden im Zeitstempel, die aktuelle nicht. Ob dem so ist und die Werte plausibel sind, kannst nur Du checken. Beide Datenbanken einfach nur mergen dürfte damit sinnlos sein. Für jedes Datum müsste der Zeitstempel beim Kopieren entsprechend manipuliert werden, so daß beide dieselbe Zeitbasis haben.

                                            Wenn Du beim SQL-Statement die einzelnen Spalten anstelle von * angibst, kannst Du bei den VALUES dann z.B. ts/1000 als Zeitstempel einfügen.
                                            Das Prinzip ist im Link unten beschrieben, alternativ in der alten DB erstmal den Zeitstempel mit ts/1000 updaten und dann 1:1 mergen.

                                            https://www.w3resource.com/sql/update-statement/update-columns-using-arithmetical-expression.php

                                            AxelF1977 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            469
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            mysql
                                            6
                                            23
                                            1331
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo