Informix IDS:DB_LOCALE与GL_COLLATE,GL_CTYPE

问题描述 投票:1回答:1

我将DB_LOCALE环境变量设置为en_US.57372后,尝试重新启动Informix IDS数据库。但是,当我尝试在sysmaster上运行查询时,

选择tabname,从informix.systables中选择站点,其中tabname如'%GL_%';它给了我

tabname   GL_COLLATE
site     en_US.819

tabname   GL_CTYPE
site     en_US.819

现在,数据库实例未启动,因为它抱怨

Error 23197: Database locale information mismatch.

我没有安装数据库服务器,但是我假设它是使用默认排序规则安装的。我也应该将GL_COLLATEGL_CTYPE更改为en_US.57372吗?

informix
1个回答
0
投票

当心-雷区!

[通常,当您创建数据库时,此时的DB_LOCALE设置将控制数据库的语言环境。语言环境en_US.57372对应于en_US.utf8。因此,如果在DB_LOCALE设置为en_US.utf8时创建数据库,您将看到以下信息:

SELECT tabid, tabname, site FROM INFORMIX.SysTables WHERE tabname MATCHES '*GL_*';

90  | GL_COLLATE  |en_US.57372
91  | GL_CTYPE    |en_US.57372

如果创建数据库时未设置DB_LOCALE,或者将其设置为en_US.8859-1en_US.0333en_US.819,那么您将看到:

90  | GL_COLLATE  |en_US.819
91  | GL_CTYPE    |en_US.819

创建数据库后,您需要使用DB_LOCALE的正确设置进行连接;您无法通过使用新的环境设置重新启动服务器来更改数据库的语言环境。您将不得不重新创建数据库以使新设置生效。如果连接到数据库时使用的DB_LOCALE设置与创建数据库时使用的设置不匹配,那么您将遇到所看到的错误。

sysmaster数据库是特殊的。可以从任何数据库访问它,而不管其语言环境如何。但是,除非您的实际语言环境与其语言环境相匹配,否则信息不一定很容易理解,即使在启动服务器时设置了en_US.8859-1,该语言环境也为DB_LOCALE。您必须设置SERVER_LOCALE(另一个相关的环境变量是CLIENT_LOCALE,但目前还不是一个因素),才能有机会更改sysmaster数据库的语言环境,但是我已经没有尝试过。

© www.soinside.com 2019 - 2024. All rights reserved.