2

私は Informix に非常に慣れていないため、sqldemo をインストールしようとして問題が発生しています。

ここまでの設定:

  • openSuse 12.1 (32 ビット)
  • Informix Growth Edition 11.70 UC6
  • Informix SQL 開発者 7.50 UC6
  • Informix RDS 7.50 UC6
  • Informix ID 7.50 UC6

数日間苦労してhttp://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jspをたくさん読んだ後、なんとか Informix をインストールしてオンラインにしました。

また、インストールに付属するデモ データベース インスタンスをインストールすることも選択しました。

私は今、Informix 4GL by Example を使い始めようとしています。

sqldemo データベースを起動しようとしています。Informix でインストールされた以前のインスタンスが置き換えられるかどうかはわかりませんが、それは別の問題です。

現在、ドキュメントに従って、次を実行するとDBがセットアップされます。

sqldemo stores2t -log

ただし、「無効なロケールが設定されています!!」というエラーが表示されます。

このエラーとドキュメントを調べてみました。

.profile ファイルに CLIENT_LOCALE と DB_LOCALE を設定しようとしました。

例えば:

  • export CLIENT_LOCALE=en_US.CP1252
  • export DB_LOCALE=en_US.819

これは役に立ちませんでした。

正しい方向へのプッシュ、またはおそらく私が読むことができる他のドキュメントを読んで、物事をよりよく説明していただければ幸いです。

他に何か情報が必要な場合は、お気軽にお尋ねください。

更新 1

返信ありがとうございます。

あなたの投稿以来、私が最初に試したことのいくつか。

  1. 指定したように CLIENT_LOCALE と DB_LOCALE を変更しました-同じエラー-設定しないでくださいと言ったので削除しました。
  2. PATH の問題を修正し、/usr/informix/bin があることを確認しました - 同じエラー
  3. INFORMIXDIR は /usr/informix
  4. INFORMIXSERVER は ol_informix1170 です (これは、informix のインストールでインストールされたデータベースからのものです。これを変更する必要があるかどうかはわかりません。変更する必要がある場合は、何に変更しますか?)
  5. あなたが言及したスクリプトを実行すると、結果は次のようになります。

  6. 言語を UK に設定していて、en_us の場合は代わりにロケールが en_gb になっていることに気づいたので、.profile でそれを変更しようとしましたが、役に立たなかったので、言語を US に、ロケールを en_us に変更しようとしましたが、これで変わりはない。

sqldemo スクリプトと既にインストールされている db についてあなたが言ったことについては、これは私が学習するための単なるテスト VB ボックスであるため、その db が削除されても問題ありません。

ol_informix1170 として設定された $INFORMIXSERVER が問題でしょうか?

助けてくれてありがとう。

ニール

更新 2

返信ありがとうございます。

注意すべき点がいくつかあります。

  1. 私が投稿した dbenv の結果は、他の環境変数が設定されていないことを意味する (uh-oh) ことを示すすべてです。あなたが投稿した環境変数のうち、それが機能するために絶対に必要なものはどれですか?

  2. 上記のように、terminfo ファイルはどこにありますか? または作成する必要がありますか?

  3. 上記のように、SQLEXEC 変数... sqlrm はどこにありますか? 私が読んだドキュメントから、$INFORMIXDIR/lib である必要があると思いますか? しかし、私はesqlディレクトリしか持っていません。これは正しいです。

  4. DEMOPATH=en_us/0333 sqldemo stores2t -log の提案を試みると、上記の最初の 3 つの何かがそれ以上の問題を引き起こしていないことを除けば、次のエラーが表示されます。INFORMIXDIR の /etc サブディレクトリ (/usr/informix) を確認します。

/usr/informix/etc を確認すると、実際には mkstores3 ファイルがないことがわかります。

  1. isqldemo について詳しく調べてみると、次のエラーが表示されます。

e01c ディレクトリはなく、0333 ディレクトリだけなので、これは完全に理にかなっていると思います。

今のところ、あなたが私に教えてくれることは本当に慰めになるでしょう。なぜなら、私の一般的な Linux と間違いなく Informix への新参者であることが大きな要因だからです。このバグが長い間存在していたことは興味深いことです。自分でそれを解決する方法を見つけたよりも経験豊富な人々、または単に sqldemo を気にしたことがない人だと思います。

私はこれを読むことを教えてくれると思います:

INFORMIX-4GL by Example バージョン 4.1 1991 年 7 月

更新されたテキストが存在するかどうかを今すぐ確認しますが、この問題を解決するためにさらに助けていただければ幸いです。Informix をインストールする前の以前のスナップショットに戻し、ol_informix1170 データベースを含めることを選択しないことが解決策になると思いますか? 私は実際にそうなるだろうとは思いませんが、私は何を知っていますか.

あなたの継続的な時間と努力に感謝します。

よろしく、

ニール

アップデート 3

ですから、私が読んでいた文書は確かに古いものであることがわかりました。別のスクリプト (dbaccessdemo7) を使用する更新版 (2002 年) を見つけました。

私はそれを実行しようとしましたが、エラーが発生しましたが、明日は別の日です.

今のところ、バグが検出され解決されたため、これを解決済みとしてマークします。これ以上 sqldemo に時間と労力を費やすつもりはありません。

どうもありがとうございます。dbaccessdemo 7 に苦労したら、新しい質問を投稿します。

よろしく、

ニール

4

1 に答える 1

3

スクリプトはsqldemo新しいサーバーを作成しません。既存のデータベースを破壊する可能性があります (1 つのサーバーに複数のデータベースが格納されている場合があります。実際、sys*サーバーの初期化時に 4 つのデータベースが作成されます) が、サーバーに害を及ぼすことはありません。

エラーの考えられる原因

無効なロケールの通常の問題は、設定していないことです$INFORMIXDIR。(へのシンボリックリンク) が正しい場所で$INFORMIXDIRない限り、設定する必要があります。/usr/informixsetも必要$INFORMIXSERVERで、通常は$INFORMIXDIR/binonが必要$PATHです。厳密に$INFORMIXSERVERは、 が唯一の必須変数です。実際には、他の 2 つについても心配します。

この$INFORMIXDIR設定は、ロケール情報 ( にあります$INFORMIXDIR/gls) とメッセージ ファイル ( にあります)を見つけるために使用されます$INFORMIXDIR/msg

CP1252 は Windows コード ページであることに注意してください。通常、Unix では、CLIENT_LOCALE または DB_LOCALE を設定しないか、次のように設定できます。

export CLIENT_LOCALE=en_us.8859-1
export DB_LOCALE=en_us.8859-1

または、(自分にとって) より適切な別のロケールを選択できます。8859-15たとえば、ロケールにユーロ記号が含まれているか、utf-8データベースでロケールが UTF-8 を指定しています。 ただし、最初のデバッグでは、8859-1 ロケール、別名 819 または 0333 (すべて IBM CCSID に基づく) を使用してください。8859-1 でうまくいかない場合は、1 つの問題があります。8859-1 では機能するが、他のコードセットやロケールでは機能しない場合は、別の問題が発生します。


上記の解決策が失敗した場合のフォローアップ情報

それが問題ではない場合は、さらに詳細を尋ねます。特に、dbenv以下のスクリプトで報告された Informix 環境を教えてください。

:       "@(#)$Id: dbenv.sh,v 2.11 2007/09/02 00:18:58 jleffler Exp $"
#
#       Printout INFORMIX database environment

informix1="DB[^=]|DELIMIDENT=|SQL|ONCONFIG|TBCONFIG|INFOR"
informix2="ARC_|CLIENT_LOCALE=|GL_|GLS8BITSYS|CC8BITLEVEL|ESQL|FET_BUF_SIZE="
informix3="INF_ROLE_SEP=|NODEFDAC=|ONCONFIG|OPTCOMPIND|PDQ|PSORT"
informix4="PLCONFIG|SERVER_LOCALE|FGL|C4GL|NE_"
informix5="TCL_LIBRARY|TK_LIBRARY"
informix="$informix1|$informix2|$informix3|$informix4|$informix5"
system="COLLCHAR=|LANG=|LC_|LD_LIBRARY_PATH(_64)?=|PATH=|SHLIB_PATH="
jlss="IXD(32|64)?="

env |
egrep "^($informix|$system|$jlss)" |
sort

これは古いスクリプトです。そのため、シバンがありません。


2回目の診断

dbenvスクリプトの完全な出力を期待していました。何かが現れる頻度は驚くべきものです。しかし、あなたが言ったことを考えると、それはおそらくOKです。

INFORMIXSERVER 設定は問題ないようです。

私はそのLANG=en_US.UTF-8設定に感銘を受けました。$LANGInformix は、変数に注意を払い$LC_*ます (そのため、変数がdbenv出力されます)。それが問題の要因かもしれません。しかし、それが問題だった場合、私はそれに対処することを期待CLIENT_LOCALEしていたでしょう. SERVER_LOCALEまた、私の Mac では、LANG=en_US.UTF-8(8859-1) データベースに問題なく接続できます。

これは、インストールの問題のように見え始めています...またはsqldemo問題...

Mac から RHEL 5 (古い) x86/64 マシンに移行し、そこで実行sqldemoしてみました。

$ dbenv
DBDATE=Y4MD-
DBEDIT=vim
INFORMIXDIR=/work4/informix/tools-7.50.FC4
INFORMIXSERVER=toru_31
INFORMIXSQLHOSTS=/work4/informix/ids-11.70.FC4/etc/sqlhosts
INFORMIXTERM=terminfo
IXD64=/work4/informix/ids-11.70.FC4
IXD=/work4/informix/tools-7.50.FC4
IXH=/work4/informix/ids-11.70.FC4/etc/sqlhosts
IXO=/work4/informix/ids-11.70.FC4/etc/onconfig.toru_31
IXS=toru_31
LANG=en_US.UTF-8
LD_LIBRARY_PATH=/lib64:/usr/lib64:/work4/informix/tools-7.50.FC4/lib:/work4/informix/tools-7.50.FC4/lib/tools:/work4/informix/tools-7.50.FC4/lib/esql:/work4/informix/ids-11.70.FC4/lib:/work4/informix/ids-11.70.FC4/lib/esql:/work4/informix/ids-11.70.FC4/lib/cli
ONCONFIG=onconfig.toru_31
PATH=/work4/informix/tools-7.50.FC4/bin:.:/work4/jleffler/bin:/u/jleffler/bin:/work4/informix/ids-11.70.FC4/bin:/u/jleffler/linux/x86_64/bin:/work4/informix/11.70.FC1:/usr/atria/bin:/work4/jleffler/perl/v5.12.1/bin:/usr/bin:/bin:/usr/X11R6/bin:/atria_release/cm_dist/vobs/imitools/bin:/opt/rational/clearcase/bin:/opt/rational/clearquest/bin
SQLCMDLOG=/work4/jleffler/.sqlcmdlog
SQLEXEC=sqlrm
TERMINFO=/work4/jleffler/terminfo
TERM=xterm-color
$ sqldemo st2 -log
Invalid Locales set !!
$

そうそう?いいえ; 私のロケールは大丈夫です、ありがとう!

まあ、それは...私はあなたの問題を再現することができます! それがステップ 1 です。ステップ 2 は、罵倒的な削除されたスクリプトを調べることです。

PRODUCT=sql
DEMOFILE=sqldemo
DEFLANG=en_US.8859-1

INFORMIXDIR=${INFORMIXDIR:=/usr/informix}
INFENV=$INFORMIXDIR/bin/infenv
CONVLOC=$INFORMIXDIR/bin/convloc

if [ $# -gt 0 -a "X$1" = "X-e" ] ; then
    LOCALE=$DEFLANG                           # -e means en_US.8859-1 required
    shift
else
    LOCALE=`$INFENV DBLANG`                   # get DBLANG value
    if [ "x${LOCALE}" = "x" ]; then        
    LOCALE=`$INFENV CLIENT_LOCALE`        # try CLIENT_LOCALE instead
    if [ "x${LOCALE}" = "x" ]; then
        LOCALE=`$INFENV DB_LOCALE`        # finally default to DB_LOCALE
    fi
    fi
fi

if [ "x${LOCALE}" = "x" ]; then
    LOCALE=$DEFLANG       # finally default to DB_LOCALE
fi

export LOCALE

if [ "x${DEMOPATH}" = "x" ]; then
    echo "Invalid Locales set !!"
else
    exec $INFORMIXDIR/demo/$PRODUCT/$DEMOPATH/$DEMOFILE $*
fi

exit $?

のテストに注意してください${DEMOPATH}DEMOPATHスクリプトに設定されていないことに注意してください。それで、それを設定する必要があります。何をする?さて、ls $INFORMIXDIR/demo/sqlさまざまなロケール固有のサブディレクトリ ( en_usja_jpko_krth_th、 ) がありzh_cn、 ディレクトリのzh_tw下に(のみ) があることを示しています。en_us0333

実行してください:

DEMOPATH=en_us/0333 sqldemo stores2t -log

これは多かれ少なかれ私にとってはうまくいきました—私はそれがあなたにとってうまくいくと信じています. $INFORMIXDIR に I4GL (p コードと c コード) と ISQL しかないという点で、少し変わった設定をしています。サーバーは別のディレクトリから実行されます。dbloadこれは、 (具体的には) のようなサーバー ユーティリティ プログラムを持っていないことを意味し$INFORMIXDIR/binます。したがって、スクリプトが でデータをロードしようとすると、失敗しましたsqldemodbloadすべての Informix ソフトウェアが 1 つのディレクトリにあるため、これでうまくいきます。さらに厄介なことに、dbloadプログラムは明示的なパスで実行されるため、PATH をファッツして使用可能にすることはできません。

これでうまくいくはずです。報告すべきバグがあります... CQ idsdb00244894 です。

大変ご迷惑をおかけして申し訳ありません。あなたはそうすべきではありませんでした。

于 2012-10-23T23:23:14.847 に答える