SQLite - datenbank synchronisation
bleicher
- datenbank
0 Vinzenz Mai0 bleicher0 Vinzenz Mai0 bleicher
Grüße,
ich habe ein neues brett vorm Kopf^^
angenomen-
ich habe eine lokale MYSQLite-Datenbank
diese will ich gelegentlich online sichern -
dazu wollte ich alle datensätze deren time()>als die letzte sicherung ist
per ein POST request an den server schicken.
(4 spalten - ID, name, nummer, status, datum)
die frage ist aber - was ist wenn ich ein datensatz bearbeite?
sein zeitstempel wird zwar erneuert, aber der muss ja in die online- version nicht INSERT sondern UPDATE werden >_< (blöd formuliert :()
eine möglichkeit wäre, jeden datensatz zu überprüfen - aber das würde voraussetzen dass ich mehr als 2 daten (1wert als variablenname + 2wert) übertrage - zumindest noch ID. bei übertragungsmethode "variable(name)=wert(nummer)", wären es 2 post-variablen : (ID=wert, ID=2wert etc.) pro tabellenzeile.
eine alternative wäre noch array_walk auf die $_POST in kombination mit explode(), sodass ich daten in form von ID=wert1#wert2 übetragen könnte.
scheint aber suboptimal
hätte jemand eine elegantere idee?
MFG
bleicher
Hallo
angenomen-
ich habe eine lokale MYSQLite-Datenbank
diese will ich gelegentlich online sichern -
hätte jemand eine elegantere idee?
nutze ein entsprechendes Log:
<zitat quelle=Appropriate Uses For SQLite>
Temporary triggers can be added to the database to record all changes into a
(temporary) undo/redo log table. These changes can then be played back when
the user presses the Undo and Redo buttons. Using this technique, an
unlimited depth undo/redo implementation can be written in surprisingly
little code.
</zitat>
Alternativ: Komprimiere die DB-Datei und sichere diese.
Freundliche Grüße
Vinzenz
Grüße,
dies ist möglich, aber nciht mein ziel - ich muss die mysqlite-kopie in sql-db form erstellen ;(
MFG
bleicher
Hallo
dies ist möglich, aber nciht mein ziel - ich muss die mysqlite-kopie in sql-db form erstellen ;(
ich verstehe Dein Problem nicht. Es scheint hausgemacht zu sein - und Du scheinst unwillig zu sein, das Problem zu beseitigen. Manche Sachen sind übrigens ganz einfach:
Jeder Datensatz trägt zwei Zeitstempel:
- Erzeugung
- letzte Änderung
Wo ist das Problem?
Freundliche Grüße
Vinzenz
Grüße,
Wo ist das Problem?
steht oben^^
ich wollte es vermeiden erstzu überprüfen ob datensatz mit dieser ID schon exestiert - hoffte es ist möglich ein sqlite query der form "ändern oder erstellen falls id nicht exestiert" zu nutzen.
MFG
bleicher
Hallo,
Wo ist das Problem?
steht oben^^
seh' ich nichts. Könntest Du bitte genauer erläutern, was Du tun willst:
a) eine Synchronisation:
Dies geht am allereinfachsten durch einfaches Ersetzen der DB-Datei.
Supereinfach, entspricht dem KISS-Prinzip.
Wenn die Datenmenge nicht zu umfangreich ist, der zu bevorzugende Weg.
b) Nutze das Query-Log
Soll ebenfalls einfach sein. Probleme sind keine zu erwarten
c) Selbstgestrickte Methode.
Kompliziert und fehleranfällig. Zu vermeiden wenn es geht.
Du willst unbedingt c) haben.
ich wollte es vermeiden erstzu überprüfen ob datensatz mit dieser ID schon exestiert -
obwohl Dir a) und b) genau diese Aufgabe abnehmen ...
hoffte es ist möglich ein sqlite query der form "ändern oder erstellen falls id nicht exestiert" zu nutzen.
ist das die wirkliche Frage? Ja? Warum hast Du nicht das Handbuch gelesen?
SQLite kennt die Erweiterung [link:http://www.sqlite.org/lang_conflict.html@title=INSERT OR REPLACE]
...
Freundliche Grüße
Vinzenz
Grüße,
es tut mir leid - ich reite auf einem fehler seit stunden rum und merks nicht - die fragestellung besteht daraus, dass ich local SQLite und auf dem Server normales SQL habe -
aber ich habs trotzdem mit dem OR lösen können^^ wennauch auf andere weise >_< brett vor dem kopf wars ja...
MFG
bleicher
echo $begrüßung;
es tut mir leid - ich reite auf einem fehler seit stunden rum und merks nicht - die fragestellung besteht daraus, dass ich local SQLite und auf dem Server normales SQL habe -
Was bitte ist "normales SQL"? Wenn du damit standardisiertes SQL meinst, dann bleibt dir wohl nichts anderes übrig, als die vorherige Abfrage. Oder alternativ generell Update verwenden, und wenn die Anzahl der betroffenen Zeilen 0 ist Insert nachschieben. Alles andere ist proprietär.
echo "$verabschiedung $name";
Grüße,
Was bitte ist "normales SQL"? Wenn du damit standardisiertes SQL meinst, dann bleibt dir wohl nichts anderes übrig, als die vorherige Abfrage. Oder alternativ generell Update verwenden, und wenn die Anzahl der betroffenen Zeilen 0 ist Insert nachschieben. Alles andere ist proprietär.
ich habe das mit mysql_query("INSERT...") OR mysql_query("UPDATE...") gelöst.
MFG
bleicher