MariaDB Tabellen Abgleichen
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Das mit dem git remote add origin hat jetzt geklappt, die URL war nur falsch. habe das .de vergessen. Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
Dort wo dein primäres Archiv sein soll -> auf dem Server.pluto hat geschrieben: So nun bin ich mir nicht sicher wo ich "git init --bare" ausführen soll?
Soll ich das Zuhause ausführen oder auf dem Internet Server?
Auf dem Server hast du --bare angegeben -> dort gibt es keine ausgecheckten Dateien, die git Datenbank befindet sich im ".git" Verzeichnis.Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Vielen Dank für eure Hilfe, es war ein tipp Fehler in der URL. Ich habe das ".de" vergessen.
Nun kann ich Problemlos Daten vom PC auf dem Internet-server schieben und auch wieder Runterholen.
Mir kommt es aber etwas "aufwendig" vor... Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
Ich habe jetzt zum Beispiel Änderungen bei den PC-Git gemacht und die sollen nun z.b. mit dem Internet-Server abgeglichen werden.
Beim PC Runterfahren wäre es wohl keine gute Idee, vielleicht per Cron-Job?
Ich werde das Konzept Testen, vielleicht ist es ja das was ich gesucht habe.
Nun kann ich Problemlos Daten vom PC auf dem Internet-server schieben und auch wieder Runterholen.
Mir kommt es aber etwas "aufwendig" vor... Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
Ich habe jetzt zum Beispiel Änderungen bei den PC-Git gemacht und die sollen nun z.b. mit dem Internet-Server abgeglichen werden.
Beim PC Runterfahren wäre es wohl keine gute Idee, vielleicht per Cron-Job?
Ich werde das Konzept Testen, vielleicht ist es ja das was ich gesucht habe.
MFG
Michael Springwald
Michael Springwald
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: MariaDB Tabellen Abgleichen
Ja sorry, da habe ich ein paar Scenarien zeitgleich aufgezeigt.
automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:pluto hat geschrieben:Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
https://gitlab.com/mseide-msegui/mseide ... change.pas
Mit MSEgit hat man einen schönen Überblick über die geänderten Dateien vor dem committen und pushen.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Meine Datenbank Anwendung wüsste es... Gut, ich könnte mir ein kleines Script schreiben um den Vorgang zu vereinfachen....automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
Ich werde es mir ein paar Wochen ansehen, ich glaube aber, dass ist nichts für mich...
Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:
https://gitlab.com/mseide-msegui/mseide ... change.pas
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
Ja.pluto hat geschrieben: Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Interessant. Muss ich mir dann wohl noch mal genauer ansehen.Ja.
Erst mal vielen dank für eure Hilfe. Das ist zwar nicht das was ich gesucht habe, damit bleibt die Urspungsfrage leider ungeklärt.
Ich werde wohl hier wohl was eigenes anfangen. Da es hier offenbar nichts Fertiges gibt um die angelegte Histroy-Table zu exportieren und wieder zu Importieren.
Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ. In der WebOberfläche müsste ich dann nur noch ein Button einbauen: "DB Uploaden" oder so ähnlich.
Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht. Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
Wie gesagt, das nennt sich Replikation.pluto hat geschrieben: Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ.
Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht.
Nicht einzelne Dateien, aber die History kann begrenzt werden:Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?
https://git-scm.com/docs/git-clone
Stichwort "shallow".
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Es ist eine Form davon.....Wie gesagt, das nennt sich Replikation.
Weil ich möchte ja es so machen, dass der Laptop nicht an sein muss....
Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.
Aha.... das ist schon mal nicht schlecht.....Nicht einzelne Dateien, aber die History kann begrenzt werden:
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
Eine Datenbank mit Replikation als Notizenspeicher zu verwenden. Den Aufwand um eine zuverlässige Replikation vor allem im Multiuser-Umfeld zu programmieren darf man auch nicht unterschätzen, siehe fliegermichls Kommentar dazu.pluto hat geschrieben: Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
MariaDB [NoteManager_28813391]> select id,Action, NoteID, title, CreateDateTime from ContentList_Histroy;
+----+--------+--------+----------------------------------------------------------+---------------------+
| id | Action | NoteID | title | CreateDateTime |
+----+--------+--------+----------------------------------------------------------+---------------------+
| 1 | INSERT | NULL | Gemüse | 2018-10-22 21:51:33 |
| 2 | INSERT | 2 | Vermarktung | 2018-10-22 21:51:33 |
| 3 | INSERT | 3 | Einteilung | 2018-10-22 21:51:33 |
| 4 | INSERT | 4 | Vermarktungs- und Qualitätsnormen | 2018-10-22 21:51:33 |
| 5 | INSERT | 5 | Kohl | 2018-10-22 21:51:33 |
| 6 | INSERT | 6 | Namensgebung | 2018-10-22 21:51:33 |
| 7 | INSERT | 7 | Systematik und Verbreitung | 2018-10-22 21:51:33 |
| 8 | INSERT | 8 | Gartensalat | 2018-10-22 21:51:33 |
| 9 | INSERT | 9 | Kultur | 2018-10-22 21:51:33 |
| 10 | INSERT | 10 | Geschichte | 2018-10-22 21:51:33 |
| 11 | INSERT | 11 | Sonstiges | 2018-10-22 21:51:33 |
| 12 | INSERT | 12 | Gartensalat | 2018-10-22 21:51:33 |
| 13 | INSERT | 13 | Beschreibung | 2018-10-22 21:51:33 |
| 14 | INSERT | 14 | Inhaltsstoffe | 2018-10-22 21:51:33 |
| 15 | INSERT | 15 | Kulturformen | 2018-10-22 21:51:33 |
| 16 | INSERT | 16 | STM32 | 2018-10-22 21:51:33 |
| 17 | INSERT | 17 | 2_Eintrag | 2018-10-22 21:51:33 |
| 18 | INSERT | 18 | 3_Eintrag | 2018-10-22 21:51:33 |
| 19 | INSERT | 19 | 1_Eintrag | 2018-10-22 21:51:33 |
| 20 | INSERT | 20 | BallonFahrt | 2018-10-22 21:51:33 |
| 21 | INSERT | 21 | 18650_battery_shild_v3 | 2018-10-22 21:51:33 |
| 22 | INSERT | 22 | Amazon-Wenger-Schweizer-Offiziersmesser-Messer-Schatulle | 2018-10-22 21:51:33 |
| 23 | INSERT | 23 | DA GEHT NOCH WAS | 2018-10-22 21:51:33 |
| 24 | INSERT | 24 | Schweizer Ingenieur im Wenger gefunden | 2018-10-22 21:51:33 |
| 25 | INSERT | 25 | Praktisch für unterwegs | 2018-10-22 21:51:33 |
| 26 | INSERT | 26 | Jeden Tag eine neue Welt | 2018-10-22 21:51:33 |
| 27 | INSERT | 27 | SternenPerfekt in allen Lebenslagen | 2018-10-22 21:51:33 |
| 28 | INSERT | 28 | Zahnstocher fehlt | 2018-10-22 21:51:33 |
| 29 | INSERT | 29 | zwischenablage | 2018-10-22 21:51:33 |
| 30 | INSERT | 30 | Begriffe_Arduino | 2018-10-22 21:51:33 |
| 31 | INSERT | 31 | Entwickler Boards | 2018-10-22 21:51:33 |
| 32 | INSERT | 32 | Stromversorgung | 2018-10-22 21:51:33 |
| 33 | INSERT | 33 | Sound | 2018-10-22 21:51:33 |
| 34 | INSERT | 34 | LED | 2018-10-22 21:51:33 |
| 35 | INSERT | 35 | Sonstiges | 2018-10-22 21:51:33 |
| 36 | INSERT | 36 | RTC | 2018-10-22 21:51:33 |
| 37 | INSERT | 37 | Drahtlos_Wireless | 2018-10-22 21:51:33 |
| 38 | INSERT | 38 | LCD | 2018-10-22 21:51:33 |
| 39 | INSERT | 39 | MCU | 2018-10-22 21:51:33 |
| 40 | INSERT | 40 | Sensoren | 2018-10-22 21:51:33 |
| 41 | INSERT | 41 | Zwischenablage_Arduino | 2018-10-22 21:51:33 |
| 42 | INSERT | 42 | KTT | 2018-10-22 21:51:33 |
| 43 | INSERT | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
| 44 | INSERT | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 45 | INSERT | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 46 | INSERT | 46 | 3_Eintrag | 2018-10-22 21:51:33 |
| 47 | INSERT | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 48 | INSERT | 48 | 7_Eintrag | 2018-10-22 21:51:33 |
| 49 | INSERT | 49 | 5_Eintrag | 2018-10-22 21:51:33 |
| 50 | INSERT | 50 | 1_Eintrag | 2018-10-22 21:51:33 |
| 51 | INSERT | 51 | Rübsen | 2018-10-22 21:51:33 |
| 52 | INSERT | 52 | Verbreitung | 2018-10-22 21:51:33 |
| 53 | INSERT | 53 | Merkmale | 2018-10-22 21:51:33 |
| 54 | INSERT | 54 | Rübsen | 2018-10-22 21:51:33 |
| 55 | INSERT | 55 | Systematik | 2018-10-22 21:51:33 |
| 56 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 57 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 58 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 59 | UPDATE | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 60 | UPDATE | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 61 | UPDATE | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 62 | UPDATE | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
+----+--------+--------+----------------------------------------------------------+---------------------+
62 rows in set (0.00 sec)
[/quote]
So sieht die Table Histroy bisher aus... Mein nächster Schritt wäre jetzt: Diese Tabelle komplett zu Exportieren in einer "Austausch" Datei. Der nächste wäre dann, diese Datei einzulesen. Später soll es im Ziel Verzeichnis noch eine Info Datei geben, wann der letzte Export statt fand.... damit nicht immer alles exportiert werden muss.
So werden z.b. die Trigger aus meiner Anwendung heraus erstellt:troy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''UPDATE'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text);'+LineEnding;
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER ContentList_AFTER_DELETE AFTER DELETE ON ContentList FOR EACH ROW '+
'INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''DELETE'', old.NoteID, old.ParentID, old.CreateDateTime, old.LastReadDataTime, old.LastWriteDataTime, old.CountRead, old.CountWrite, old.Title, old.Text);' +LineEnding;
MariaDB2.AConnection.ExecuteDirect(s);
end; // TPLNoteManager.CreateTrigger
[/code]
Dieser Weg klappt recht gut. Was ich bisher selten bis gar nicht beobachtet habe bei anderen Projekten: Meine Anwendung kann "sogar" eine Datenbank komplett neu Anlegen mit den Nötigen Tabellen und soweiter.... Hier verwende ich ein "Trick".... den ich irgendwo im Internet gefunden habe....
Vielleicht wird jetzt mein Vorhaben "klarer" und ich konnte zeigen, dass es bereits einen Code gibt.
Im Anhang gibt es noch ein Bild wie die Web Oberfläche derzeit aussieht.
+----+--------+--------+----------------------------------------------------------+---------------------+
| id | Action | NoteID | title | CreateDateTime |
+----+--------+--------+----------------------------------------------------------+---------------------+
| 1 | INSERT | NULL | Gemüse | 2018-10-22 21:51:33 |
| 2 | INSERT | 2 | Vermarktung | 2018-10-22 21:51:33 |
| 3 | INSERT | 3 | Einteilung | 2018-10-22 21:51:33 |
| 4 | INSERT | 4 | Vermarktungs- und Qualitätsnormen | 2018-10-22 21:51:33 |
| 5 | INSERT | 5 | Kohl | 2018-10-22 21:51:33 |
| 6 | INSERT | 6 | Namensgebung | 2018-10-22 21:51:33 |
| 7 | INSERT | 7 | Systematik und Verbreitung | 2018-10-22 21:51:33 |
| 8 | INSERT | 8 | Gartensalat | 2018-10-22 21:51:33 |
| 9 | INSERT | 9 | Kultur | 2018-10-22 21:51:33 |
| 10 | INSERT | 10 | Geschichte | 2018-10-22 21:51:33 |
| 11 | INSERT | 11 | Sonstiges | 2018-10-22 21:51:33 |
| 12 | INSERT | 12 | Gartensalat | 2018-10-22 21:51:33 |
| 13 | INSERT | 13 | Beschreibung | 2018-10-22 21:51:33 |
| 14 | INSERT | 14 | Inhaltsstoffe | 2018-10-22 21:51:33 |
| 15 | INSERT | 15 | Kulturformen | 2018-10-22 21:51:33 |
| 16 | INSERT | 16 | STM32 | 2018-10-22 21:51:33 |
| 17 | INSERT | 17 | 2_Eintrag | 2018-10-22 21:51:33 |
| 18 | INSERT | 18 | 3_Eintrag | 2018-10-22 21:51:33 |
| 19 | INSERT | 19 | 1_Eintrag | 2018-10-22 21:51:33 |
| 20 | INSERT | 20 | BallonFahrt | 2018-10-22 21:51:33 |
| 21 | INSERT | 21 | 18650_battery_shild_v3 | 2018-10-22 21:51:33 |
| 22 | INSERT | 22 | Amazon-Wenger-Schweizer-Offiziersmesser-Messer-Schatulle | 2018-10-22 21:51:33 |
| 23 | INSERT | 23 | DA GEHT NOCH WAS | 2018-10-22 21:51:33 |
| 24 | INSERT | 24 | Schweizer Ingenieur im Wenger gefunden | 2018-10-22 21:51:33 |
| 25 | INSERT | 25 | Praktisch für unterwegs | 2018-10-22 21:51:33 |
| 26 | INSERT | 26 | Jeden Tag eine neue Welt | 2018-10-22 21:51:33 |
| 27 | INSERT | 27 | SternenPerfekt in allen Lebenslagen | 2018-10-22 21:51:33 |
| 28 | INSERT | 28 | Zahnstocher fehlt | 2018-10-22 21:51:33 |
| 29 | INSERT | 29 | zwischenablage | 2018-10-22 21:51:33 |
| 30 | INSERT | 30 | Begriffe_Arduino | 2018-10-22 21:51:33 |
| 31 | INSERT | 31 | Entwickler Boards | 2018-10-22 21:51:33 |
| 32 | INSERT | 32 | Stromversorgung | 2018-10-22 21:51:33 |
| 33 | INSERT | 33 | Sound | 2018-10-22 21:51:33 |
| 34 | INSERT | 34 | LED | 2018-10-22 21:51:33 |
| 35 | INSERT | 35 | Sonstiges | 2018-10-22 21:51:33 |
| 36 | INSERT | 36 | RTC | 2018-10-22 21:51:33 |
| 37 | INSERT | 37 | Drahtlos_Wireless | 2018-10-22 21:51:33 |
| 38 | INSERT | 38 | LCD | 2018-10-22 21:51:33 |
| 39 | INSERT | 39 | MCU | 2018-10-22 21:51:33 |
| 40 | INSERT | 40 | Sensoren | 2018-10-22 21:51:33 |
| 41 | INSERT | 41 | Zwischenablage_Arduino | 2018-10-22 21:51:33 |
| 42 | INSERT | 42 | KTT | 2018-10-22 21:51:33 |
| 43 | INSERT | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
| 44 | INSERT | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 45 | INSERT | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 46 | INSERT | 46 | 3_Eintrag | 2018-10-22 21:51:33 |
| 47 | INSERT | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 48 | INSERT | 48 | 7_Eintrag | 2018-10-22 21:51:33 |
| 49 | INSERT | 49 | 5_Eintrag | 2018-10-22 21:51:33 |
| 50 | INSERT | 50 | 1_Eintrag | 2018-10-22 21:51:33 |
| 51 | INSERT | 51 | Rübsen | 2018-10-22 21:51:33 |
| 52 | INSERT | 52 | Verbreitung | 2018-10-22 21:51:33 |
| 53 | INSERT | 53 | Merkmale | 2018-10-22 21:51:33 |
| 54 | INSERT | 54 | Rübsen | 2018-10-22 21:51:33 |
| 55 | INSERT | 55 | Systematik | 2018-10-22 21:51:33 |
| 56 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 57 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 58 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 59 | UPDATE | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 60 | UPDATE | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 61 | UPDATE | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 62 | UPDATE | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
+----+--------+--------+----------------------------------------------------------+---------------------+
62 rows in set (0.00 sec)
[/quote]
So sieht die Table Histroy bisher aus... Mein nächster Schritt wäre jetzt: Diese Tabelle komplett zu Exportieren in einer "Austausch" Datei. Der nächste wäre dann, diese Datei einzulesen. Später soll es im Ziel Verzeichnis noch eine Info Datei geben, wann der letzte Export statt fand.... damit nicht immer alles exportiert werden muss.
So werden z.b. die Trigger aus meiner Anwendung heraus erstellt:
Code: Alles auswählen
procedure TPLNoteManager.CreateTrigger();
var
s:String;
begin
{ ' DECLARE myRandomNumber INT;' + LineEnding +
' DECLARE TempNoteID INT;' + LineEnding +
' SET myRandomNumber=CAST(rand()*40000 as UNSIGNED);' + LineEnding +
' SET TempNoteID=new.id+myRandomNumber;' + LineEnding +}
s:='CREATE TRIGGER `ContentList_BEFORE_INSERT` BEFORE INSERT ON ContentList FOR EACH ROW' +LineEnding+
' BEGIN ' + LineEnding +
' DECLARE TempNoteID INT;' + LineEnding +
' SELECT IFNULL(MAX(id),0)' + LineEnding +
' FROM ContentList' + LineEnding +
' INTO TempNoteID;' + LineEnding +
' set new.NoteID=TempNoteID+1; ' + LineEnding+
' END';
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER `ContentList_AFTER_INSERT` AFTER INSERT ON ContentList FOR EACH ROW' +LineEnding+
' BEGIN ' + LineEnding +
' INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''INSERT'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text); ' + LineEnding +
' END';
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER ContentList_AFTER_UPDATE AFTER UPDATE ON ContentList FOR EACH ROW '+
'INSERT INTO ContentList_His[code=laz]
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER ContentList_AFTER_DELETE AFTER DELETE ON ContentList FOR EACH ROW '+
'INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''DELETE'', old.NoteID, old.ParentID, old.CreateDateTime, old.LastReadDataTime, old.LastWriteDataTime, old.CountRead, old.CountWrite, old.Title, old.Text);' +LineEnding;
MariaDB2.AConnection.ExecuteDirect(s);
end; // TPLNoteManager.CreateTrigger
[/code]
Dieser Weg klappt recht gut. Was ich bisher selten bis gar nicht beobachtet habe bei anderen Projekten: Meine Anwendung kann "sogar" eine Datenbank komplett neu Anlegen mit den Nötigen Tabellen und soweiter.... Hier verwende ich ein "Trick".... den ich irgendwo im Internet gefunden habe....
Code: Alles auswählen
procedure TPLNoteManager.CreateDB;
var
str:string;
begin
MariaDB2.AConnection.DatabaseName:='mysql';
MariaDB2.AConnection.ExecuteDirect('use mysql');
MariaDB2.AConnection.Open;
str:='SHOW DATABASES LIKE '''+DBName+''';';
MariaDB2.Query.SQL.Text:=str;
MariaDB2.Query.ExecSQL;
MariaDB2.Query.Open;
if MariaDB2.Query.RecordCount = 0 then begin
str:='CREATE DATABASE IF NOT EXISTS '+DBName;
MariaDB2.AConnection.ExecuteDirect(str);
MariaDB2.AConnection.ExecuteDirect('use ' + DBName);
MariaDB2.AConnection.DatabaseName:=DBName;
MariaDB2.ATransaction.Commit;
CreateTable();
CreateHistroyTable();
CreateTrigger();
end;
MariaDB2.AConnection.Close();
MariaDB2.AConnection.DatabaseName:=DBName;
MariaDB2.AConnection.Open;
end; // TPLNoteManager.CreateDB
Im Anhang gibt es noch ein Bild wie die Web Oberfläche derzeit aussieht.
MFG
Michael Springwald
Michael Springwald