ApplixWare

設定

ApplixWareを正しく設定してやれば、 そこから PostgreSQLODBC ソフトウェアドライバにアクセスすることができるようになります。

ApplixWareによるデータベースアクセスを有効にする

この説明は LinuxApplixWare 4.4.1リリースの為の物です。 さらに多くの詳細情報は Linux Sys Admin オンラインブックを参照してください。

  1. elfodbclibodbc.so ODBC ドライバマネージャー)が共用ライブラリを 発見することができるように、 axnet.cnf を修正しなくてはなりません。 このライブラリは ApplixWare に含まれていますが、 axnet.cnf が正しい位置を指し示すように 修正する必要があります。

    root権限で、applixroot/applix/axdata/axnet.cnf というファイルを編集します。

    1. まず、axnet.cnf の中に有る、以下で始まる一行を探します。

      #libFor elfodbc /ax/...

    2. それを以下のように変更して下さい(訳注:行頭の#を外す)。

      libFor elfodbc applixroot/applix/axdata/axshlib/lib
      これは elfodbc に対し、指定したディレクトリで ODBC サポートライブラリを探すように指示します。 もしどこか他の場所に ApplixWare をインストールした場合は、 それに合わせてApplixWareのルートパスを変更してください。

  2. 前述したような.odbc.iniを作ってください。 テキストフィールドに**BLOB**が表示されない ように、.odbc.iniのデータベース固有セクションに、 以下のようなフラグを追加することもできます。

    TextAsLongVarchar=0

ApplixWare での ODBC 接続テスト

  1. Applix Data を起動します。

  2. 使用したい PostgreSQL データベースを選びます。

    1. 検索 -> サーバ選択 を選びます。

    2. ODBC のタブをクリックし、 一覧 ボタンをクリックします。 .odbc.ini で設定したデータベースが見えるはずです。 ホスト:表示フィールド が空欄である事を確認してください (もし空欄になっていない場合は、 axnet がデータベースを探そうと他のホスト上にある axnet と通信しようとしています)。

    3. 一覧ボタンで起動された選択ボックスからデータ ベースを選び、了解ボタンをクリックします。

    4. ユーザ名とパスワードを ユーザー定義ダイアログ に入力し、 了解ボタンをクリックします。

    データウインドウの左下隅に "Starting elfodbc server"という メッセージが表示されます。もしエラーを表示するダイアログボックスが出たら、 後述のデバッグセクションを参照してください。

  3. '準備完了' というメッセージが、画面左下隅に現われます。 これは問い合わせ行うことが出来るようになった事を示しています。

  4. 検索 -> テーブルの選択 を実行し接続先のテーブルを選び、 次に 検索 -> 検索 と選んで、データベースにアクセスして みてください。そのテーブルの50行程度が表示されるはずです。

よくある問題

以下のメッセージは、Applix Data を通して ODBC 接続を行おうとする場合、 表示されることがあります:

Cannot launch gateway on server

elfodbc が libodbc.so ファイルを見つけることが出来ません。 この場合、axnet.cnf ファイルを確認し ください。

ODBC ゲートウエイからのエラー: 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 はユーザの代理 として動作するので、真のマルチユーザシステム上ではそれはまさ ルートセキュリティ(つまり、それは全ユーザのディレクトリ を読み書き可能)で動作してしまう。 しかしながら、我々はこれが何かしらのセキュリティホールを作るか どうかはっきりしないので、使用を薦めることをためらってしまう。

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 をこのように実行します。

       strace -f -s 1024 -p 10432 

  3. strace の出力を確認します。

    Cary からの情報: ApplixWare からのエラーメッセージの 多くは 標準エラー出力に出力されますが、 しかしどこに 標準エラー出力が送られるか 定かでないので、それで 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 デモの実行

ApplixWare Data チュートリアル を完全に 実行するためには、チュートリアルが参照するサンプルテーブル を作る必要があります。このテーブルを作るために使ったELF マクロ はデータベースコラムの多くをNULLの状態にしますが、 PostgreSQL は現在このオプションを 許可していません。

以下のようにすれば、この問題を回避することができます:

ApplixWare デモの修正

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

  2. コピーした sqldemo.am を編集します:

    1. null_clause = "NULL" という行を探します。

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

  3. マクロエディタを起動します。

  4. マクロエディタで sqldemo.am ファイルを開きます。

  5. ファイル -> コンパイルと保存を選択します。

  6. マクロエディタ を終了します。

  7. Applix Data を起動します。

  8. * -> マクロ実行 コマンドを選びます。

  9. マクロ名ウインドに "sqldemo" と入力し、 了解ボタンをクリックします。

    Applix Data 画面左下にあるステータスラインで進行状況を 見ることができます。

  10. 以上で、デモテーブルにアクセスできるはずです。

便利なマクロ

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

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

Caution

ユーザ名とパスワード情報を含んでいる如何なるファイルも、その保護は注意深く行うこと。

サポート済みプラットホーム

psqlODBC は、Linux 上で構築とテストが行われました。 FreeBSD とSolaris で成功したという報告があります。 PostgreSQL を既にサポートしている他のプラットホームでのベースコードについて既知の制限はありません。