错误“无效的语言环境设置!!”尝试在Informix上安装sqldemo时

时间:2012-10-23 09:01:41

标签: informix isql

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

到目前为止设置:

  • openSuse 12.1(32位)
  • Informix Growth Edition 11.70 UC6
  • Informix SQL Developer 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安装的实例,但这是一个不同的问题。

现在根据文档,运行以下内容应该设置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. 跑过你提到的脚本,结果: INFORMIXDIR =的/ usr / Informix的 INFORMIXSERVER = ol_informix1170 INFORMIXSQLHOSTS =的/ usr / Informix的在/ etc / SQLHOSTS LANG =的en_US.UTF-8 ONCONFIG = ONCONFIG

  6. 我注意到我已经将语言设置为UK,这使得locales en_gb改为en_us,因此尝试在我的.profile中更改它,这没有帮助,所以也尝试将语言更改为US和语言环境到en_us,但这没什么区别。

  7. 至于你对sqldemo脚本和已经安装的数据库的说法,如果删除了这个数据库就好了,因为这只是一个测试VB框供我学习。

    将$ INFORMIXSERVER设置为ol_informix1170会出现问题吗?

    再次感谢您的帮助。

    尼尔

    更新2

    再次感谢您的回复。

    有几点需要注意。

    1. 我发布的dbenv结果是我假设/假设的所有显示(呃哦)意味着没有设置其他环境变量。您发布的哪个环境变量对于它起作用是绝对必要的?

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

    3. 如上所述,SQLEXEC变量......我在哪里可以找到sqlrm?我可以记得我读过的文件,我觉得它应该是$ INFORMIXDIR / lib?但我只有一个esql目录。这是对的。

    4. 除非上面的前3个内容没有引起更多问题,在尝试DEMOPATH = en_us / 0333 sqldemo stores2t -log的建议时,我收到以下错误: 抱歉,无法读取构建演示数据库所需的mkstores3程序。检查INFORMIXDIR的/ etc子目录(/ usr / informix)。

    5. 检查/ usr / informix / etc确实显示没有mkstores3文件。

      1. 尝试进一步记下isqldemo,我收到以下错误: / usr / informix / bin / isqldemo:第58行:/ usr / informix / demo / sql / en_us / e01c / isqldemo:没有这样的文件或目录。
      2. 我想这很有道理,因为没有e01c目录,只有0333目录。

        现在你可以告诉我的任何事情确实都是一种安慰,因为我对Linux的肯定是新的,而且肯定是Informix的一个重要因素。有趣的是这个bug已经存在了这么久。我想方法更有经验的人比我想出如何自己解决它,或者只是从不打扰sqldemo。

        我想这会教我读这个:

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

        现在检查是否存在任何更新的文本,但仍然可以在解决此问题时获得更多帮助。您是否认为在安装Informix之前还原到先前的快照而不选择包含ol_informix1170数据库可能是一种可能的解决方案?我不会真的看到它会,但我知道什么。

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

        此致

        尼尔

        更新3

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

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

        现在我要将此标记为已解决,因为已检测到错误并已解决。我不会把更多的时间和精力投入到sqldemo中。

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

        此致

        尼尔

1 个答案:

答案 0 :(得分:3)

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

错误的可能原因

无效区域设置的正常问题是您没有设置$INFORMIXDIR。您需要设置$INFORMIXDIR,除非/usr/informix是(符号链接)正确的位置。您还需要$INFORMIXSERVER设置,并且$INFORMIXDIR/bin上通常需要$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$LC_*变量(这就是dbenv打印出来的原因)。这可能是问题的一个因素。但是,如果是问题,我本来期望CLIENT_LOCALESERVER_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步是查看 expletive deleted 脚本。

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_thzh_cnzh_tw}并在en_us目录下0333(仅限)。

请运行:

DEMOPATH=en_us/0333 sqldemo stores2t -log

这或多或少对我有用 - 我相信它对你有用。我有一个稍微不寻常的设置,因为我在$ INFORMIXDIR中只有I4GL(p代码和c代码)和ISQL;服务器用完不同的目录。这意味着我dbload中没有$INFORMIXDIR/bin(具体)的服务器实用程序。当sqldemo脚本尝试使用dbload加载数据时,我失败了。它适用于您,因为您将所有Informix软件放在一个目录中。为了增加对伤害的侮辱,它通过显式路径运行dbload程序,所以我无法使我的PATH变得可用。

这应该让你去。我有一个bug报告......它是CQ idsdb00244894。

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