PDA

View Full Version : DB2 Connect unter Linux - Probleme



Seiten : [1] 2

Olli1
05-08-04, 13:26
Hallo,

wer kann helfen ?

Wir haben DB2 Coonect auf einer Linux Büchse eingerichtet und gem. des Howto von Stefan Dreyer (http://www.phptutorials.de/index.php?article=12&tpl=2) eingerichtet.

AS/400 Voraussetzungen sind ebenfalls erfüllt.

Beim Connect bekommen wir einen Fehler: SQL0332N There is no available conversion for the source code page "923" to the target code page "UNKNOWN". Reason Code "1". SQLSTATE=57017

Auf diesen weist der Hr. Dreyer in seinem Howto ja auch hin:

"Soweit schon ganz gut. Nachdem der Dienst gestartet wurde, habe ich dann bei einem Connect folgende Fehlermeldung erhalten:
SQL0332N There is no avaiable conversion for the source code page "65535" to the target code page "819". Reason Code "1". SQLSTATE=57017

Das heisst also, dass die beiden sich bei der Konvertierung nicht verstehen. Die Konvertierung kann man global einstellen, bei uns war das aber nicht möglich, da sich auf der Datenbank ein produktiver Datenbestand befindet. Der einfachste Weg besteht darin dir Codepageumsetzung CCSID für den entsprechenden User, den auf die DB zugreift zu ändern:
CHGUSRPRF USRPRF(test) CCSID(273)
Die obige Zuordnung funktioniert einwandfrei, es kann aber auch sein, dass es auch andere Funktionieren Zuordnungen gibt. "

Die CCSID für den entsprechenden User haben wir geändert, der Fehler taucht jedoch immer noch auf !

Hat jmd. eine Idee, was das Problem sein könnte ?

Danke schonmal im Voraus !!!

mfG
O. Hölscher

Fuerchau
05-08-04, 13:40
CCSID 65535 ist eigentlich für *HEX-Daten bestimmt.
Die CCSID des Users hat mit der Konvertierung nichts zu tun !!!

Die CCSID 65535 muss sich wohl in der Datenbank befinden (DSPFD/DSPFFD). Ich kenne zwar DB2/Connect nicht, aber vielleicht gibts da ja ein ähnliches Flag wie beim iSeries-Access: "Convert 65535 = 1 bzw. true" (Windows-ODBC-Einstellung, Verbindungszeichenfolge).

Sollte es das nicht geben, hilft leider nur ein Casting im Select:

select char(myfield, len, 273) as myfield ... from

Dadurch wird zwangsläufig eine Konvertierung in 273 (Deutsch) vorgenommen, so dass in 819 (ANSI) gewandelt werden kann.

Olli1
05-08-04, 13:43
Tja, bis zum Select kommen wir ja gar nicht, da der Fehler schon direkt beim Connect zur Datenbank auftritt.

Olli

Fuerchau
05-08-04, 13:51
Da hilft wohl nur, den Systemwert QCCSID auf eine gültige ID zu setzen.
Schau mal nach, welche CCSID die Datei QSYS/QADBXREF (DSPFD) hat. Diese CCSID stellst du in den Systemwert.
Prüfe auch mal den Systemwert QCHRID. Dieser müsste bereits korrekt gesetzt sein.

Das Problem liegt wohl darin, dass DB2/Connect wohl auf die SYS*-Dateien der QSYS2 zugreifen will und dafür bereits eine Codewandlung durchgeführt werden muss.

Es kann allerdings auch sein, dass eine Codepage 819 nicht verfügbar ist und deshalb z.B. 850 (ASCII) verwendet werden sollte. Dies ist allerdings im Linux ?! einzustellen !

Olli1
05-08-04, 14:06
Also, ich will jetzt nicht unbedingt den Systemwert QCCSID ändern, da es sich hier um ein produktives System handelt...

QCCSID ist 65535
In der QADBXREF ist die CCSID 273
QCHRID: Zeichensatz-ID: 697, CCSID: 273

Im USRPRF kann man ja die CCSID auch vorgeben. Standardmässig ist dort *SYSVAL vorgegeben. Das habe ich ja bereits auf 273 geändert. Was ja im Prinzip den gleichen Effekt haben sollte, als wenn ich *SYSVAL stehen lassen würde und den Systemwert ändere...

Fuerchau
05-08-04, 14:16
Dem ist leider nicht ganz so, da einige Job's unter QUSER laufen.
Ändere doch zusätzlich auch mal QUSER auf 273.

Unter Google bin ich auf folgende Links gestossen:
http://www-1.ibm.com/servers/eserver/iseries/db2/db22drda.htm

Alternativ probiere doch mal iSeriesAccess for Linux aus ;)

Ansonsten kommst du wohl nicht darum herum, QCCSID auf 273 zu setzen (für die laufende Anwendung keine Auswirkung!!!).

Fuerchau
05-08-04, 14:19
PS:
http://www.phptutorials.de/index.php?article=12&tpl=2

Olli1
05-08-04, 14:28
Danke. Das Tutorial ist mir aber schon bekannt... (s.o.) ;)

Auf der IBM Seite steht übrigens: Furthermore, to successfully connect, you may need to change one of the following: the CCSID of the job, the CCSID of the user profile used, or the system CCSID value (QCCSID) if it's the default 65535.

Das heisst für mich, dass der Systemwert nicht unbedingt geändert werden muss... Womit ich also wieder genauso weit wäre, wie am Anfang... :rolleyes:

Gruß,
Olli

Olli1
05-08-04, 14:36
Übrigens brachte auch die Änderung der CCSID im USRPRF QUSER nichts... Fehlermeldung ist weiterhin die gleiche !

Fuerchau
05-08-04, 14:48
Dann probier doch wenigstens mal die Änderung des Systemwertes auf 273 aus !
Du vertust dir dabei nix.