2

我对 Informix 非常陌生,并且在尝试安装 sqldemo 时遇到了一些麻烦。

到目前为止设置:

  • openSuse 12.1(32 位)
  • Informix 成长版 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。

我正在尝试启动 sqldemo 数据库。我不知道它是否会取代以前使用 Informix 安装的实例,但这是一个不同的问题。

现在根据文档,运行以下命令应该设置数据库:

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 install 一起安装的数据库,不知道是否必须更改?如果需要更改为什么?)
  5. 运行您提到的脚本,结果: INFORMIXDIR=/usr/informix INFORMIXSERVER=ol_informix1170 INFORMIXSQLHOSTS=/usr/informix/etc/sqlhosts LANG=en_US.UTF-8 ONCONFIG=onconfig

  6. 我注意到我已将语言设置为英国,这使得语言环境为 en_gb 而不是 en_us,因此尝试在我的 .profile 中更改它,但没有帮助,因此还尝试将语言更改为美国,将语言环境更改为 en_us,但这使得没有不同。

至于你所说的关于 sqldemo 脚本和已经安装的数据库,如果删除那个数据库就可以了,因为这只是一个测试 VB 框供我学习。

设置为 ol_informix1170 的 $INFORMIXSERVER 可能是问题所在吗?

再次感谢您的帮助。

尼尔

更新 2

再次感谢您的回复。

有几点需要注意。

  1. 我发布的 dbenv 结果显示了我假设/假设(呃-哦)意味着未设置其他环境变量。您发布的哪些环境变量对于它的工作是绝对必要的?

  2. 如上所述,我在哪里可以找到 terminfo 文件,还是需要创建它?

  3. 如上所述,SQLEXEC 变量...我在哪里可以找到 sqlrm?我可以从我读过的文件中多少记得我认为它应该是 $INFORMIXDIR/lib?但我只有一个 esql 目录。它是否正确。

  4. 除非上述前 3 项中的某些内容不会导致更多问题,否则在尝试您的 DEMOPATH=en_us/0333 sqldemo stores2t -log 的建议时,我收到以下错误:抱歉,无法读取构建演示数据库所需的 mkstores3 程序。检查 INFORMIXDIR (/usr/informix) 的 /etc 子目录。

检查 /usr/informix/etc 确实表明没有 mkstores3 文件。

  1. 尝试进一步说明 isqldemo,我收到以下错误:/usr/informix/bin/isqldemo: line 58: /usr/informix/demo/sql/en_us/e01c/isqldemo: No such file or directory。

我想这很有意义,因为没有 e01c 目录,只有 0333 目录。

现在,你能告诉我的任何事情都确实是一种安慰,因为我对一般 Linux 和 Informix 的新手是一个很大的因素。有趣的是,这个错误已经存在了很长时间。我想有更多经验的人比我想出如何自己解决它,或者只是从不打扰 sqldemo。

我想这会教我阅读:

INFORMIX-4GL 示例版本 4.1 1991 年 7 月

现在要检查是否存在任何更新的文本,但仍然希望在解决此问题方面提供更多帮助。您是否认为在安装 Informix 之前恢复到以前的快照并且不选择包含 ol_informix1170 数据库可能是一种可能的解决方案?我不会真的看到它会是,但我知道什么。

非常感谢您的持续时间和努力。

问候,

尼尔

更新 3

所以我确实看到我正在阅读的文件是古老的。我发现了一个使用不同脚本(dbaccessdemo7)的更新版本(2002)。

我尝试运行它,遇到了错误,但明天又是一天。

由于检测到并解决了错误,现在我将其标记为已解决。我不会在 sqldemo 上投入更多的时间和精力。

非常感谢,如果我在使用 dbaccessdemo 7 时遇到困难,我会发布一个新问题。

问候,

尼尔

4

1 回答 1

3

sqldemo脚本不会创建新服务器;它可能会破坏您现有的数据库(单个服务器可能包含多个数据库;实际上,在sys*初始化服务器时会创建 4 个数据库),但不会损害您的服务器。

错误的可能原因

无效语言环境的正常问题是您没有设置$INFORMIXDIR. 您需要$INFORMIXDIR设置除非/usr/informix是(符号链接)正确的位置。您还需要$INFORMIXSERVERset ,通常需要$INFORMIXDIR/binon $PATH。严格来说,$INFORMIXSERVER是唯一的强制变量;在实践中,你也会担心另外两个。

$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,那么我们有一组问题;如果它适用于 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

这是一个旧脚本;这就是为什么没有shebang的原因。


第二组诊断

我希望dbenv脚本的完整输出;令人惊讶的是,某些事情出现的频率很高。但是,鉴于您所说的,它可能没问题。

INFORMIXSERVER 设置听起来不错。

我对这个LANG=en_US.UTF-8设置感到震惊;Informix 确实注意变量(这就是打印这些变量的原因)$LANG。这可能是问题的一个因素。但是,如果这是问题所在,我会期望并处理它。另外,在我的 Mac 上,我有但可以连接到 (8859-1) 数据库。$LC_*dbenvCLIENT_LOCALESERVER_LOCALELANG=en_US.UTF-8

这开始看起来像一个安装问题......或sqldemo问题......

我从 Mac 转换到 RHEL 5 (archaic) 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_us, ja_jp, ko_kr, th_th, zh_cn, zh_tw),并且在en_us目录下有0333(仅)。

请运行:

DEMOPATH=en_us/0333 sqldemo stores2t -log

这或多或少对我有用——我相信它对你有用。我有一个稍微不寻常的设置,因为我在 $INFORMIXDIR 中只有 I4GL(p 代码和 c 代码)和 ISQL;服务器用完了不同的目录。这意味着我没有像dbload. $INFORMIXDIR/bin因此,当sqldemo脚本尝试使用 加载数据时dbload,它对我来说失败了。它会为您工作,因为您将所有 Informix 软件都放在一个目录中。雪上加霜的是,它dbload通过显式路径运行程序,所以我不能让我的 PATH 变得可用。

这应该让你继续前进。我有一个错误要报告……它是 CQ idsdb00244894。

很抱歉你遇到了这么多麻烦。你不应该这样做。

于 2012-10-23T23:23:14.847 回答