7.5. ApplixWare

ApplixWareは少なくとも複数のプラットフォームでサポートされている ODBC データベースインタフェースを持っています。ApplixWare4.4.2はLinux上のPostgreSQL7.0で、 PostgreSQLのディストリビューションに含まれている psqlODBCドライバを使用して動作確認されています。

7.5.1. 設定

PostgreSQL ODBC ソフトウェアドライバにアクセスするためには、ApplixWare は正しく設定される必要があります。

ApplixWare データベースアクセスの有効化

これらの説明はLinux用の ApplixWare 4.4.2のためののものです。より詳細はLinux Sys Admin オンラインブックを参照して下さい。

  1. libodbc.so (ODBCドライバマネージャ)共有ライブラリをelfodbcが認知できるように axnet.cnfを書き換える必要があります。このライブラリは ApplixWare ディストリビューションに含まれていますが、axnet.cnfを修正して、このライブラリの正しい位置を指すように変更する必要があります。

    ルートで、 applixroot/applix/axdata/axnet.cnf を編集して下さい。

    1. axnet.cnfの下記で始まる行を見つけて下さい。

      #libFor elfodbc /ax/...

    2. その行のコメントを外して有効にして下さい。

      libFor elfodbc applixroot/applix/axdata/axshlib/lib

      これはODBCサポートライブラリをこのディレクトリで探すように elfodbc に指示しています。一般的に、Applix/optにインストールされているので、絶対パスは/opt/applix/axdata/axshlib/libとなりますが、Applixを別の場所にインストールした場合はそれに合ったパスを設定して下さい。

  2. Section 7.3 の説明のように、.odbc.iniを作成して下さい。また、

    TextAsLongVarchar=0

    のフラグを、データベース特定の.odbc.iniに追加すると、テキストフィールドの表示は**BLOB**のようになりません。

ApplixWare ODBC 接続のテスト

  1. Applix Dataを起動させて下さい。

  2. 使用したいPostgreSQLデータベースを選択して下さい。

    1. Query->Choose Server を選択して下さい。

    2. ODBCを選択し、Browseをクリックして下さい。.odbc.iniで設定したデータベースが現れるはずです。Host: フィールドが空であることを確認して下さい。(空でない場合、axnetはデータベースを検索するために他のマシンのaxnetと接続しようとします。)

    3. Browseで開かれたダイアログボックスからデータベースを選択し、OKをクリックして下さい。

    4. 認証ダイアログで、ユーザ名とパスワードを入力し、 OKをクリックして下さい。

    データウィンドウの左下に"Starting elfodbc server"と表示されているはずです。エラーメッセージのダイアログボックスが表示された場合には、下記のデバッグ方法の節を参照して下さい。

  3. データウィンドウの左下に "Ready" メッセージが表示されます。これは問い合わせを入力できる状態であることを意味します。

  4. Query->Choose tables でテーブルを選択し、データベースにアクセスするためにQuery->Queryを選択して下さい。テーブルの最初の50行ほどが表示されます。

7.5.2. よくある問題

Applix Dataを使って ODBC接続を行う際に下記のようなメッセージが表示される場合があります。

Cannot launch gateway on server

elfodbclibodbc.soを見つけることができなかったことを意味します。 axnet.cnfを確認して下さい。

Error from ODBC Gateway:IM003::[iODBC][Driver Manager]Specified driver could not be loaded

.odbc.iniで指定されているドライバを libodbc.soが見つけることができなかったことを意味します。設定を確認して下さい。

Server: Broken Pipe

ドライバのプロセスが、他の問題によって終了したことを意味します。PostgreSQL ODBCの最新のバージョンではないことが原因として考えられます。

setuid to 256: failed to launch gateway

9月にリリースされたApplixWare v4.4.1 (Linuxの初の公式ODBCサポートがあるリリース)では、ユーザ名が8文字を越える長さの場合、少々問題が生じます。その問題の解説はSteve Campbell氏によるものです()。

著者: 寄贈:Steve Campbell (),1998-10-20

axnetプログラムのセキュリティシステムには、少々問題があるようです。axnetはユーザの代わりにさまざまなことを行うので、複数のユーザシステムではルートのセキュリティを実行しながら(各ユーザのディレクトリ内に読み書きができるため)使用すべきです。しかし、この方法をお勧めするのは少々躊躇してしまいます。この方法がどんなセキュリティホールを作りだすか分からないからです。

7.5.3. ApplixWare ODBC 接続のデバッグ

接続問題のデバッグの方法としては、Unixシステムの straceユーティリティを使用する方法があげられます。

strace を使用したデバッグ

  1. ApplixWare を起動して下さい。

  2. 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

  3. strace の結果を確認して下さい。

    Caryからの補足: ApplixWareからのエラーメッセージの多くはstderrに出力されますが、その stderrが実際にどこに出力されるのかが不明なため、straceを使用されることをお勧めします。

一例として、"Cannot launch gateway on server"が表示された後、axnetstraceを実行すると下記のものが表示されました。

[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 elfodbclibodbc.so を見つけることができなかったということを意味しています。これからもお分かり頂けますように、axnet.cnfを変更する必要があります。

7.5.4. ApplixWare デモの実行

ApplixWareデータチュートリアルを読み進める前に、まず、チュートリアルが扱っているサンプルテーブルを作成する必要があります。テーブルを作成する際に使用されているELFマクロは多くのデータベースの列をNULL状態にしようとしますが、現在の PostgreSQLでは、これは不可能となっています。

この問題を解決するためには、下記のことを実行して下さい。

ApplixWare デモの編集

  1. ローカルディレクトリに /opt/applix/axdata/eng/Demos/sqldemo.am をコピーして下さい。

  2. コピーしたローカルのsqldemo.amの内容を下記のように編集して下さい。

    1. null_clause = "NULL" を検索します。

    2. これを null_clause = "" に変更します。

  3. Applix Macro Editor を起動して下さい。

  4. Macro Editorでsqldemo.am ファイルを開いて下さい。

  5. File->Compile and Save を選択して下さい。

  6. Macro Editor を終了して下さい。

  7. Applix Data を起動して下さい。

  8. *->Run Macro を選択して下さい。

  9. sqldemo と入力し、OK をクリックして下さい。

    データウィンドウの(左下にある)ステータスラインに、進行状況が表示されます。

  10. これでデモ用のテーブルが参照できます。

7.5.5. 有用なマクロ

標準Applix 起動マクロファイルにデータベースのログイン名とパスワード情報を追加することができます。下記のものは ~/axhome/macros/login.amファイルの例です。

macro login
set_set_system_var@("sql_username@","tgl")
set_system_var@("sql_passwd@","no$way")
endmacro

Caution

ユーザ名やパスワード情報を含むファイルの保護には十分ご注意下さい。