- - PR -
DB2 V5.1へのODBCアクセス "iSeries for Linux 8.10"
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-09 08:59
AS400/400e上でOS V5.1で動くDB2に
LINUX FEDORA CORE 4の UnixODBCを使ってをアクセスしようとしてます いろいろ試行錯誤して失敗した上で いろいろ苦しみながらもなんとかドライバを http://www-03.ibm.com/servers/eserver/iseries/access/ からドライバーをとてきて http://www-03.ibm.com/servers/eserver/iseries/access/linux/guide/ を参考にすすめています いま ODBCINST.ini に、 [iSeries Access ODBC Driver] Description = iSeries Access for Linux ODBC Driver Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so Threading = 2 DontDLClose = 1 UsageCount = 1 がiSeriesAccess-5.2.0-1.10.i386.rpmをインストールしたときに 自動追加されさらに ODBCConfigで odbc.iniを正常につながっているWINDOWSのものを参考にしながら [MYAS400] Description = iSeries Access ODBC Driver Driver = iSeries Access ODBC Driver System = xxx.xxx.xxx.xxx UserID = MYUSER Password = MYPASS Naming = 1 DefaultLibraries = MYGRP Database = ConnectionType = 0 CommitMode = 0 ExtendedDynamic = 0 DefaultPkgLibrary = MYGRP DefaultPackage = AllowDataCompression = 1 LibraryView = 0 AllowUnsupportedChar = 0 ForceTranslation = 1 Trace = 0 のように設定しました 構造としては MYTABLEというテーブルがMYGRPというライブラリ?にありそれが QSYSという器〔上位のライブラリ)にはいってます TELNETでアクセスしてエミュレータで、STRSQLコマンドを実行して、 select * from MYGRP/MYTABLE などとやると、普通にSQLが実行できます ただしODBCのテストだと以下のように # cd /opt/ibm/iSeries/bin # ./rmtodbc /DSN:MYAS400 /USER:MYUSER /PASSWORD:MYPASS "Select * from QSYS.MYGRP.MYTABLE" IBM iSeries Access for Linux Version 5 Release 2 Level 0 Remote Command via ODBC utility V1.2 (C) Copyright IBM Corporation and Others 1984, 2003. All rights reserved. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Licensed Materials - Property of IBM Running: Select * from QSYS.MYGRP.MYTABLE SQL5016 - Qualified object name QCMDEXC not valid. なぜかエラーになります。 そもそもこのODBCがV5.1と相性がよくないのか ODBC.iniの設定がだめなのか SQLの書き方がだめなのか、さっぱりわかりません AS400のDB2のODBCを通じての設定たSQLの書き方でなに か注意することはあるでしょうか? アドバイスいただければうれしいです | ||||||||||||
|
投稿日時: 2006-02-09 14:31
rmtodbcの使い方が間違っているような気がします。 きのこさんの参考にしているページに説明が書いてあります。 そもそも、rmtodbcは、AS/400上のCLを実行するためのもので、SQLを投げるツールではないと思います。
それと、rmtodbc は結果を直接受け取れないのですが、その点は大丈夫ですか?
http://www-1.ibm.com/support/docview.wss?uid=std31c04155ddbc4f20449256fa8001fc390 [ メッセージ編集済み 編集者: dodo 編集日時 2006-02-09 14:36 ] | ||||||||||||
|
投稿日時: 2006-02-09 18:11
DoDoさん
ありがとうございました isqlでやりましたら問題なく接続して、結果がとれました #isql MYAS400 MYUSER MYPASS >select * from mylib/mytable 実際に最終的にPHPから結果をとりたいもで $DSN="MYAS400"; $db = odbc_connect($DSN,"MYUSER","MYPASS") or die(odbc_error().":".odbc_errormsg()); print "Connected!"; などをPHP5(FEDORA4のCD付属)を実行すると Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][IBM][iSeries Access ODBC Driver] Communication link failure. comm rc=10013 - CWBCO1003 - Sockets error, function returned 10013, 192.168.xxx.xxx, SQL state 08S01 in SQLConnect in /var/www/html/con3.php on line 3 08S01:[unixODBC][IBM][iSeries Access ODBC Driver] Communication link failure. comm rc=10013 - CWBCO1003 - Sockets error, function returned 10013, 192.168.xxx.xxx というエラーになりますね isqlでODBCをつかって接続、SQL実行ガまったく問題ないので PHP5もしくはAPACHEとUnixODBCがうまく連携されていないのでしょうね。 httpd.conf php.ini /etc/rc.d/init.d/httpd あるいはその他でチェックするべき設定がありましたらどうかご教授ください たびたびすみません |
1