AIX下db2 connnect时报的编码问题解决

问题描述:

=>create dababase test using codeset GBK territory CN

=>connect to test
=>SQL0332N  Character conversion from the source code page "1386" to the target code page "819" is not supported. SQLSTATE=57017

 

问题原因:

      上边的错误则说明server端的字符集是1386的,而客户端的字符集是819(is08859-1)的,db2不能server端1386的字符集转化为client端819的字符集。

 

解决方法:

       解决这个问题的思想是将client端的字符集改为与server端兼容的:

=>db2set db2codepage=819
=>db2 terminate
=>db2stop force
=>db2start

 

相关知识:

三个层次的字符集:在DB2数据库中,与字符集相关的问题主要有三个层次的字符集的设置,其中系统级别和实例级别的字符集可以根据需求进行修改,而数据库级别的数据集则必须在建库时确定。
  (1)操作系统 Locale:系统级别的代码页设置,决定应用程序的默认代码页;
  假如大家希望将 OS Locale 设置为中文,可以考虑下面的方法:
  UNIX:大家可以通过 export LANG=”zh_CN” 命令修改当前的 Locale 到中文;
  Windows:在“开始->设置->控制面板->区域选项”中进行对系统的语言设置进行选择;
  (2)DB2CODEPAGE:DB2 实例级别的代码页设置,它会影响DB2相关应用程序对代码页转换时做出代码页判定。
  大家可以通过 db2set DB2CODEPAEG= 命令将 DB2CODEPAGE 设置为你需要的字符集。
  (3)DATABASE CODEPAGE:DB2 数据库级别的代码页设置;必须在建库时进行设置。
  大家在创建数据库时必须指定需要的代码页:
  db2 "CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY CN"
  注释:这条语句可用于创建指定区域为中国(CN)的 Unicode 数据库。

 

当客户端连接到数据库的时候,他们的字符集要相互兼容,否则就会报下边类似的错误:

=> db2 connect to test
       => SQL0332N  Character conversion from the source code page "1386" to the target
code page "819" is not supported.  SQLSTATE=57017

你可能感兴趣的:(AIX下db2 connnect时报的编码问题解决)