我对Informix非常陌生,并且在尝试安装sqldemo时遇到了一些麻烦。
到目前为止设置:
经过几天的努力和大量的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
非常感谢您的回复。
自从你的帖子以来我首先尝试了几件事。
跑过你提到的脚本,结果: INFORMIXDIR =的/ usr / Informix的 INFORMIXSERVER = ol_informix1170 INFORMIXSQLHOSTS =的/ usr / Informix的在/ etc / SQLHOSTS LANG =的en_US.UTF-8 ONCONFIG = ONCONFIG
我注意到我已经将语言设置为UK,这使得locales en_gb改为en_us,因此尝试在我的.profile中更改它,这没有帮助,所以也尝试将语言更改为US和语言环境到en_us,但这没什么区别。
至于你对sqldemo脚本和已经安装的数据库的说法,如果删除了这个数据库就好了,因为这只是一个测试VB框供我学习。
将$ INFORMIXSERVER设置为ol_informix1170会出现问题吗?
再次感谢您的帮助。
尼尔
更新2
再次感谢您的回复。
有几点需要注意。
我发布的dbenv结果是我假设/假设的所有显示(呃哦)意味着没有设置其他环境变量。您发布的哪个环境变量对于它起作用是绝对必要的?
如上所述,我在哪里可以找到terminfo文件,还是需要创建?
如上所述,SQLEXEC变量......我在哪里可以找到sqlrm?我可以记得我读过的文件,我觉得它应该是$ INFORMIXDIR / lib?但我只有一个esql目录。这是对的。
除非上面的前3个内容没有引起更多问题,在尝试DEMOPATH = en_us / 0333 sqldemo stores2t -log的建议时,我收到以下错误: 抱歉,无法读取构建演示数据库所需的mkstores3程序。检查INFORMIXDIR的/ etc子目录(/ usr / informix)。
检查/ usr / informix / etc确实显示没有mkstores3文件。
我想这很有道理,因为没有e01c目录,只有0333目录。
现在你可以告诉我的任何事情确实都是一种安慰,因为我对Linux的肯定是新的,而且肯定是Informix的一个重要因素。有趣的是这个bug已经存在了这么久。我想方法更有经验的人比我想出如何自己解决它,或者只是从不打扰sqldemo。
我想这会教我读这个:
INFORMIX-4GL示例 版本4.1 1991年7月
现在检查是否存在任何更新的文本,但仍然可以在解决此问题时获得更多帮助。您是否认为在安装Informix之前还原到先前的快照而不选择包含ol_informix1170数据库可能是一种可能的解决方案?我不会真的看到它会,但我知道什么。
非常感谢您持续的时间和精力。
此致
尼尔
更新3
所以我确实看到我正在阅读的文件很古老。我找到了一个更新的(2002),它使用了不同的脚本(dbaccessdemo7)。
我尝试过运行它,遇到了错误,但明天又是另一天。
现在我要将此标记为已解决,因为已检测到错误并已解决。我不会把更多的时间和精力投入到sqldemo中。
非常感谢,如果我在使用dbaccessdemo 7,我会发布一个新问题。
此致
尼尔
答案 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_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步是查看 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_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变得可用。
这应该让你去。我有一个bug报告......它是CQ idsdb00244894。
我很抱歉你遇到了这么多麻烦。你不应该这样做。