他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

7.5. ApplixWare

ApplixWare には少なくとも複数のプラットフォームでサポートされている ODBC データベースインタフェースがあります。ApplixWare 4.4.2 はLinux 上の PostgreSQL 7.0で、 PostgreSQL の配付物に含まれている psqlODBC ドライバを使用して動作確認されています。

7.5.1. 設定

PostgreSQL ODBC ソフトウェアドライバにアクセスするためには、ApplixWare は正確に設定されなければなりません。

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

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

  1. libodbc.soODBCドライバマネージャ)共有ライブラリを 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

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