Informix IDS:DB_LOCALE 与 GL_COLLATE、GL_CTYPE
Informix IDS: DB_LOCALE vs GL_COLLATE, GL_CTYPE
我尝试在将 DB_LOCALE
环境变量设置为 en_US.57372
后重新启动 Informix IDS 数据库。
但是,当我尝试 运行 对 sysmaster 的查询时,
select tabname,来自 informix.systables 的站点 where tabname like '%GL_%';
它给了我
tabname GL_COLLATE
site en_US.819
tabname GL_CTYPE
site en_US.819
现在,数据库实例没有启动,因为它抱怨
Error 23197: Database locale information mismatch.
我没有安装数据库服务器,但我假设它是使用默认排序规则安装的。我是否也应该将 GL_COLLATE
和 GL_CTYPE
更改为 en_US.57372
?
当心——雷区!
一般来说,当你创建一个数据库时,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-1
或 en_US.0333
或 en_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
的语言环境数据库,但我还没有试验过。
我尝试在将 DB_LOCALE
环境变量设置为 en_US.57372
后重新启动 Informix IDS 数据库。
但是,当我尝试 运行 对 sysmaster 的查询时,
select tabname,来自 informix.systables 的站点 where tabname like '%GL_%'; 它给了我
tabname GL_COLLATE
site en_US.819
tabname GL_CTYPE
site en_US.819
现在,数据库实例没有启动,因为它抱怨
Error 23197: Database locale information mismatch.
我没有安装数据库服务器,但我假设它是使用默认排序规则安装的。我是否也应该将 GL_COLLATE
和 GL_CTYPE
更改为 en_US.57372
?
当心——雷区!
一般来说,当你创建一个数据库时,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-1
或 en_US.0333
或 en_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
的语言环境数据库,但我还没有试验过。