ApplixWareは 少なくとも複数のプラットフォームでサポートされている ODBCデータベースインターフェースを持っています。 ApplixWare4.4.2は Linux上のPostgres7.0で、 Postgresのディストリビューションに含まれている psqlODBCドライバを使用して動作確認されています。
PostgresODBC ソフトウェアに接続するためには、ApplixWareは 正しく設定される必要があります。
ApplixWareデータベース接続を可能にする
これらの説明はLinux用の ApplixWare4.4.2のため のものです。より詳細はLinux Sys Adminの オンラインブックを参照して下さい。
libodbc.so(ODBCドライバマネージャー) シェアードライブラリをelfodbcが認知できるように axnet.cnfを書き換える必要があります。 このライブラリはApplixWareディストリビューションに 含まれていますが、axnet.cnfを正しい場所に 変更する必要があります。
ルートで、 applixroot/applix/axdata/axnet.cnf を編集して下さい。
axnet.cnfの下記で始まる 行を見つけて下さい。
#libFor elfodbc /ax/...
その行のコメントを外して有効にして下さい。
libFor elfodbc applixroot/applix/axdata/axshlib/libこれはODBCサポートライブラリを このディレクトリで探すようにelfodbcに指示しています。 一般的に、Applixは /optにインストールされているので、 絶対パスは/opt/applix/axdata/axshlib/libと なりますが、Applixを別の場所に インストールした場合はそれに合ったパスを設定して下さい。
上記の説明のように、.odbc.iniを 作成して下さい。また、
TextAsLongVarchar=0のフラグを、データベース特定の.odbc.iniに 追加すると、フィールドの表示は**BLOB**のように なりません。
ApplixWare ODBC接続のテスト
Applix Dataを起動させて下さい。
使用したいPostgresデータベースを選択して下さい。
Query->Choose Serverを選択して下さい。
ODBCを選択し、Browseを クリックして下さい。.odbc.iniで設定した データベースが現れるはずです。Host: fieldが 空であることを確認して下さい。(空でない場合、axnetはデータベースを 検索するために他のマシンと接続しようとします。)
Browseで開かれたダイアログボックスからデータベースを 選択し、OKをクリックして下さい。
認証ダイアログで、ユーザ名とパスワードを入力し、 OKをクリックして下さい。
左下の端に"Starting elfodbc server"と 表示されているはずです。エラーメッセージのダイアログが 表示された場合には、下記のデバック方法のセクションを 参照して下さい。
データウィンドウの左下に'Ready'メッセージが表示されます。 これは問い合わせを入力できる状態であることを意味します。
Query->Choose tablesでテーブルを選択し、データベースに 接続するためにQuery->Queryを選択して下さい。最初の50行ほどが 表示されます。
Applix Dataを使って ODBC接続を行う際に下記のようなメッセージ が表示される場合があります。
elfodbcがlibodbc.soを 見つけることができなかったことを意味します。 axnet.cnfを確認して下さい。
.odbc.iniで指定されているドライバを libodbc.soが見つけることができなかったことを 意味します。設定を確認して下さい。
ドライバのプロセスが、他の問題によって終了したことを 意味します。Postgres ODBCの最新のバージョンではないことが 原因として考えられます。
9月にリリースされたApplixWare v4.4.1 (Linuxの初の公式ODBCサポートがあるリリース) では、ユーザ名が8文字以上の長さの場合、少々問題が生じます。 その問題の解説はSteve Campbell氏によるものです (<scampbell@lear.com>)。
著者: 寄贈:Steve Campbell (<scampbell@lear.com>), 1998-10-20
接続問題のデバックの方法としては、Unixシステムの straceユーティリティを使用する方法が あげられます。
straceを使用してのデバック方法
applixwareを起動させて下さい。
axnetプロセスに対してstraceを 開始させて下さい。例えば、
% ps -aucx | grep axでは、下記のように表示されます。
cary 10432 0.0 2.6 1740 392 ? S Oct 9 0:00 axnet cary 27883 0.9 31.0 12692 4596 ? S 10:24 0:04 axmain
そして、下記のコマンドを実行して下さい。
% strace -f -s 1024 -p 10432
straceの結果を確認して下さい。
Caryからの捕捉: ApplixWareからのエラーメッセージの 多くはstderrに出力されますが、その stderrが実際にどこに出力されるのかが 不明なため、straceを使用されることを お勧めします。
一例として、"Cannot launch gateway on server"が 表示された後、axnetにstraceを実行すると下記のものが 表示されました。
[pid 27947] open("/usr/lib/libodbc.so", O_RDONLY) = -1 ENOENT (No such file or directory) [pid 27947] open("/lib/libodbc.so", O_RDONLY) = -1 ENOENT (No such file or directory) [pid 27947] write(2, "/usr2/applix/axdata/elfodbc: can't load library 'libodbc.so'\n", 61) = -1 EIO (I/O error)これは、applix elfodbcはlibodbc.soを 見つけることができなかったということを意味しています。 これからもお分かり頂けますように、axnet.cnfを変更する必要があります。
ApplixWareデータチュートリアルを読み進める前に、 まず、チュートリアルが扱っているサンプルテーブルを作成する必要が あります。テーブルを作成する際に使用されているELFマクロは 多くのデータベースの列をNULL状態にしようとしますが、現在の Postgresでは、これは不可能となっています。
この問題を解決するためには、下記のことを実行して下さい。
ApplixWare Demoを編集する
ローカルディレクトリに /opt/applix/axdata/eng/Demos/sqldemo.am をコピーして下さい。
コピーしたローカルのsqldemo.amの 内容を下記のように編集して下さい。
'null_clause = "NULL"という行を検索します。
これを'null_clause = ""'に変更します。
Applix Macro Editorを起動させて下さい。
Macro Editorでsqldemo.am ファイルを開いて下さい。
File->Compile and Saveを選択して下さい。
Macro Editorを終了させて下さい。
Applix Dataを起動させて下さい。
*->Run Macroを選択して下さい。
"sqldemo"と入力し、OKを クリックして下さい。
左下にあるデータウィンドウのステータスラインに、進行状況が 表示されます。
これでサンプルテーブルが参照できます。
標準Applix起動マクロファイルにデータベースのログイン名と パスワード情報を追加することができます。下記のものは ~/axhome/macros/login.amファイルの 例です。
macro login set_set_system_var@("sql_username@","tgl") set_system_var@("sql_passwd@","no$way") endmacro
Caution |
ユーザ名やパスワード情報が書かれたファイルの保護には 十分ご注意下さい。 |