Anmelden

View Full Version : Insert/Update über 2. iSeries



andwaw
26-03-12, 09:58
Hallo zusammen,
ich habe momentan ein recht blödes Problem.

Als erstes versuche ich mal die Umgebung anschaulich darzustellen.
Ich habe 2 iSeries Server:
- i5 A
- i5 B

i5 A ist der momentan produktive Server der auch für Kunden zur Verfügung steht. Hier ist noch eine alte PHP Version (4.3.8) installiert.
Auf i5 B ist eine aktuelle Version des ZendServers CE installiert damit ich mich in das Framework einarbeiten kann und aktuellere Funktionen von PHP 5.3 nutzen kann.

Nun führe ich auf i5 B einen php Script aus der einen Update/Insert auf eine Tabelle auf i5 A macht. Dieser Funktioniert leider nicht. Allerdings wird er komplett ohne Fehlermeldung ausgeführt. Noch lustiger: Während der Insert Operation kann ich auf der i5 A mit STRSQL in die Tabelle hineinschauen und sehe wie fröhlich alle Datensätze hinein geschrieben werden. Sobald die Insertoperation allerdings abgeschlossen ist werden wieder alle neuen Datensätze aus der Tabelle entfernt.

Als Host habe ich den RDB Eintrag, den ich auf i5 A hinterlegt habe eingetragen. Die Tabelle ist auf der i5 A auch journalisiert weswegen ich keine Probleme habe, wenn ich den Script von i5 A starte.

Script ==> i5 A ==> i5 B

Hat jemand eine Idee? Falls ich das Problem zu kompliziert beschrieben habe oder irgendwelche Informationen fehlen, dann sagt es mir bitte, dann mach ich ein Schaubild oder sowas ;)

Mit freundlichen Grüßen,
Andreas Wawer

BenderD
26-03-12, 10:07
... da fehlt das abschließende Commit.

D*B


Hallo zusammen,
ich habe momentan ein recht blödes Problem.

Als erstes versuche ich mal die Umgebung anschaulich darzustellen.
Ich habe 2 iSeries Server:
- i5 A
- i5 B

i5 A ist der momentan produktive Server der auch für Kunden zur Verfügung steht. Hier ist noch eine alte PHP Version (4.3.8) installiert.
Auf i5 B ist eine aktuelle Version des ZendServers CE installiert damit ich mich in das Framework einarbeiten kann und aktuellere Funktionen von PHP 5.3 nutzen kann.

Nun führe ich auf i5 B einen php Script aus der einen Update/Insert auf eine Tabelle auf i5 A macht. Dieser Funktioniert leider nicht. Allerdings wird er komplett ohne Fehlermeldung ausgeführt. Noch lustiger: Während der Insert Operation kann ich auf der i5 A mit STRSQL in die Tabelle hineinschauen und sehe wie fröhlich alle Datensätze hinein geschrieben werden. Sobald die Insertoperation allerdings abgeschlossen ist werden wieder alle neuen Datensätze aus der Tabelle entfernt.

Als Host habe ich den RDB Eintrag, den ich auf i5 A hinterlegt habe eingetragen. Die Tabelle ist auf der i5 A auch journalisiert weswegen ich keine Probleme habe, wenn ich den Script von i5 A starte.

Script ==> i5 A ==> i5 B

Hat jemand eine Idee? Falls ich das Problem zu kompliziert beschrieben habe oder irgendwelche Informationen fehlen, dann sagt es mir bitte, dann mach ich ein Schaubild oder sowas ;)

Mit freundlichen Grüßen,
Andreas Wawer

andwaw
26-03-12, 10:45
Ok soweit so gut. Setze ich das im PHP Script(odbc_autocommit ($id, ON)) oder muss ich das irgendwie auf der i5 B setzen?

gruß Andreas

Fuerchau
26-03-12, 11:30
Autocommt ist ggf. die falsche Lösung, da jeder insert einzeln commited wird.

Besser ist es da, eine Transaktion zu starten (gibts bestimmt als Funktion und Objekt, sowas wie StartTransaction).

Wenn man dann fertig ist, ruft man TransactionObject.CommitTransaction auf, im Fehlerfall kann man dann auch TransactionObject.RollbackTransaction ausführen.