• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

lokale Datenbank mit der auf einem USB Stick abgleichen

andynail

Mitglied
Hallo zusammen

meine Webseite ist eine Linksammlung mit Passwörtern, so dass ich diese nicht ins Web stellen möchte. Und nun trage ich an meinem Schlüssel einen winzigen USB Stick herum und möchte diesen schweren Schlüsselbund stets am Rechner einstecken. Also sitze ich vor dem Rechner, starte server2go und trage in Datenbanken Links per SQL Anweisung ein. Und nun will ich aber nicht nur einseitig, also nur die Daten von daheim auf den USB Stick laden, sondern beide Datenbanken miteinander abgleichen. Und wie4 ich das per SQL Anweisung hinbekommen könnte kann ich mir bereits vorstellen.

Doch nun ist es ja doch so das ich erst einmal mit php eine Verbindung zum Server herstellen muss und dann nurnoch die Datenbank angeben muss. Und auf dem Server ist ja auch der Ordner konfiguriert in diesem die Datenbanken lieggen.

Also ergibt sich die Frage ob es denn überhaupt möglich ist den Pfad zu einer externen Datenbank anzugeben?

Danke gruß Andreas
 
Pfad?

Jede Verbindung zu einer Datenbank machst Du doch über TCP/IP. Ob Du das nun über einen USB-Stick, auf lokaler Festplatte oder auf Deinem Webspace machst, eine Verbindung zu einer Datenbank mit PHP baust Du auf, indem Du einen Host angibst, einen Benutzer und ein Passwort.
So kannst Du Dich mit Deinem PHP-Script vom USB-Stick von jedem Rechner aus an jede beliebige Datenbank (sofern sie erreichbar ist) verbinden.
Ich versteh grad nicht, wo da ein Pfad zum Tragen kommt?

Mein Webserver weiß nichts davon, wo die Datenbanken liegen. Verwechselst Du da vielleicht den bloßen Webserver mit einem Installationspaket (ala XAMPP), das Webserver und Datenbank enthält? Der Webserver baut nie eine Verbindung zur Datenbank über lokale Dateien auf, d.h. er braucht keinen Pfad zur Datenbank, das ist nur bei der Installation einer Datenbank von Interesse.
 
Hallo u8nd danke.

Es ist ja nur so das ich erst einmal mit php eine Verbindung zum Server herstellen muss und dann erst eine Datenbank auswählen kann. Das man auch ein Verzeichnis zur betreffenden Datenbank angeben kann wusste ich bisher nicht. Ich muss nur den Namen der Datenbank angeben und hab schon Zugriff auf die Tabellen. Es existiert ja auch eine my.ini in dieser irgend etwas mit default angegeben ist und darin der Ordner dbdir steht. Und in diesem liegt auch meine Datenbank. Und zwei mal den gleichen Server kann ich ja nicht starten.

Kann ich also zwei Variablen anlegen und in jede eine Verbindung zu einer Datenbank angeben? Und das nur unter dem lokal laufenden Server?

php:

$verbindung=mysql_connect(ini_get("mysqli.default_host"), $user, $password);
$db1 = mysql_select_db("datenbank", $verbindung);
$ergebnis1 = mysql_query("select * from Cache");

$db2 = mysql_select_db("d:\datenbank", $verbindung);
$ergebnis2 = mysql_query("select * from Cache"); // für den Abgleich
mysql_query("insert into $db1");

Danke gruß Andreas
 
Zuletzt bearbeitet:
Es ist ja nur so das ich erst einmal mit php eine Verbindung zum Server herstellen mus und dann erst eine Datenbank auswählen kann.
Na, das ist ja das ganz normale Procedere. Das hat ja nichts damit zu tun, ob Du an PC1 oder PC2 sitzt, Dein PHP-Script auf einem USB-Stick läuft, oder nicht.

Das man auch ein Verzeichnis zur betreffe3nden Datenbank angeben kann wusste ich bisher nicht.
Das hast Du doch behauptet. Das war ja meine Frage.

Ich muss nur den Namen der Datenbank angeben und hab schon Zugriff auf die Tabellen. Es existiert ja auch eine my.ini in dieser irgend etwas mit default angegeben ist und darin der Ordner dbdir steht. Und in diesem liegt meine Datenbank.
Das ist ja für den Zugriff auf die Datenbank egal.

Kann ich also zwei Variablen anlegen und in jede eine Verbindung zu einer Datenbank angeben? Und das nur unter dem lokal laufenden Server?
Hm?
Du kannst Dich an zwei Datenbanken gleichzeitig connecten, klar, wieso nicht?

$db2 = mysql_select_db("d:\datenbank", $verbindung);
Ob sowas geht, weiß ich nicht.

Ich sehe Dein Problem noch nicht. Es sei denn, Du hast Probleme damit, dass Du zwei Datenbanksysteme nicht gleichzeitig gestartet bekommst. Natürlich nicht auf dem selben Port. Aber Du kannst die eine ja für den Standard-Port konfigurieren, die andere für einen anderen. Dann kannst Du beide Datenbankverbindungen parallel auf haben und bei der einen was exportieren und bei der anderen importieren.
 
Hallo und danke

es müssste dann ja beide Server am laufen sein. Ich kann aber server2go nur einmal starten. Ich hatte Adresse und Port geändert und erhalte trozdem die Meldung das server2go bereits ausgeführt wird. Und wenn ich die Connection zur externen Datenbank aufbaue, wie komme ich dann auf die Tabelle?

Danke gruß Andreas
 
Du hast doch nur zwei verschiedene Datenbanken, oder? Dazu brauchst Du eigentlich keine zwei Webserver. Ich kenne Server2Go nur vom Namen, dachte aber immer, das sei der Name für ein Installationspaket aus verschiedenen Servern. Gute Programme kann man mehrmals starten, mit unterschiedlichen Ports. Wenn das in diesem Falle nicht möglich ist, dann musst Du wohl Deine Daten aus der einen Datenbank exportieren, dann die andere DB starten und da importieren und dann abgleichen.

Und zu Deiner zweiten Frage, wenn Du eine Connection zu einer Datenbank aufbaust, dann kommst Du ganz normal an die Tabellen, ist ja egal, mit was für einer DB Du Dich verbindest. In PHP gibts die Funktion mysql_connect() für die Verbindung und mysql_select_db() für die Auswahl der Datenbank. Mit SQL greifst Du dann auf die Tabellen zu.
 
Warum denn eigentlich MySQL? Also so ein richtiges DBMS? Reicht nicht Sqlite, was im Prinzip nur eine SQL-Sprache für Dateien ist? Mit einem richtigen Adapter fällt auch das Austauschen des DBMS leichter.
 
Hallo Efchen

server2go kann man auf CD brennen und von dort aus starten und dieses startet dann auch den Apache Server. Kann man den Apache Server 2mal starten? Dann könnte ich ja auf meinem Rechner xampp liste installieren.

Denn verstehe ich das falsch? Mir kommt es in den 2 Zeilen so vor das du in der Ersten mit der Variable $Verbindung die Verbindung zum Server angibst und diese dann in der 2. benötigt wird um eine Datenbank auswählen zu können. Und das muss doch immer der Server sein auf diesem die Datenbank gespeichert ist? Oder reicht es die Verbindung zu dem gerade laufenden aufzunehmen um dann die Datenbank mit d:\Datenbank öffnen zu können? Aber wie komme ich dann an die Tabelle in dieser Datenbank mit einer sql Abfrage heran?

$verbindung=mysql_connect(ini_get("mysqli.default_ host"), $user, $password);
mysql_select_db("datenbank", $verbindung);

Müssen dann beide Datenbanken und/oder auch Tabellen unterschiedliche Namen haben, so dass nicht immer cache geschrieben wird sondern select frm cache1 und select form cache2? Es stehen dann beide Tabellen zur Verfügung?

Und hallo crash. Wie kann das mit sqlite funktionieren? Server2go beherrscht auch dieses.

Wenn das Ganze funktionieren sol,l dann würde ich mich jetzt über ein Script freuen.

Danke gruß Andreas
 
Zuletzt bearbeitet:
Du kannst es einfach benutzen. Für Sqlite braucht man nur die Sqlite-Bibliothek und ein entsprechend übersetztes PHP.
 
Kann man den Apache Server 2mal starten?
Auf verschiedenen Ports wäre das möglich.
Aber vielleicht reicht Dir ein einziger Apache, den Du so konfigurierst, dass Du damit (per virtual hosts) sowohl auf Deinen Computer, als auch auf eine Site auf dem USB Stick zugreifen kannst.

Mir kommt es in den 2 Zeilen so vor das du in der Ersten mit der Variable $Verbindung die Verbindung zum Server angibst
Zum Datenbank-System. Nicht zum Webserver, der ist uninteressant.

und diese dann in der 2. benötigt wird um eine Datenbank auswählen zu können.
Genau.

Und das muss doch immer der Server sein auf diesem die Datenbank gespeichert ist?
Ja, wohin Du halt Deine Verbindung aufgebaut hast.

Oder reicht es die Verbindung zu dem gerade laufenden aufzunehmen um dann die Datenbank mit d:\Datenbank öffnen zu können?
Was heißt denn "der gerade laufenden"? Um eine Datenbankverbindung aufzubauen, musst Du einen Computer angeben, auf dem die Datenbank läuft und ggfs. einen alternativen Port. Natürlich muss die DB laufen, denn sonst kannst Du ja keine Verbindung erstellen. Und auf die Daten einer Datenbank greift man nicht über das Filesystem (D:) zu, sondern per DB-Schnittstelle. Dafür baust Du ja die Verbindung wie gezeigt auf.

Aber wie komme ich dann an die Tabelle in dieser Datenbank mit einer sql Abfrage heran?
Mit SQL.
Code:
mysql_query("select * from table where field='wert' order by field2", $verbindung);

Müssen dann beide Datenbanken und/oder auch Tabellen unterschiedliche Namen haben
Nein. Du gibst ja an, über welches Datenbanksystem (Rechner/Port) und welche Datenbank darin Du auf eine Tabelle zugreifen willst.

Es stehen dann beide Tabellen zur Verfügung?
Jedes Datenbanksystem stellt seine eigenen Datenbanken mit eigenen Tabellen zur Verfügung.
 

Neueste Beiträge

Zurück
Oben