一、问题现象
华为云GaussDB数据库兼容4种数据库类型,在创建数据库之前要确认清楚兼容数据库的类型与字符编码。比如在mysql5.7以上支持insert on duplicate key update SQL语法,若在GaussDB集中式环境创建数据库时默认为O数据库,针对O类型数据库不支持上面mysql5.7 SQL语法,执行时会产生SQL错误,这篇技术文章为了详细说明GaussDB支持的兼容数据库与字符编码。
二、技术背景
GaussDB创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。
场景1:集中式创建库语法:
CREATE DATABASE database_name
[ [ WITH ] { [ OWNER [=] user_name ] |
[ TEMPLATE [=] template ] |
[ ENCODING [=] 'encoding' ] |
[ LC_COLLATE [=] 'lc_collate' ] |
[ LC_CTYPE [=] 'lc_ctype' ] |
[ DBCOMPATIBILITY [=] 'compatibilty_type' ] |
[ TABLESPACE [=] tablespace_name ] |
[ CONNECTION LIMIT [=] connlimit ] |
[ DBTIMEZONE [=] 'time_zone' ]}[...] ];
ENCODING参数为可选,指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。不指定时,默认使用模版数据库的编码。模板数据库template0和template1的编码默认与操作系统环境相关。template1不允许修改字符编码,因此若要变更编码,请使用template0创建数据库。常用取值:GBK、UTF8、Latin1、GB18030等,具体支持的字符集如下。
名称 |
描述 |
语言 |
是否服务器端? |
ICU(International Components for Unicode)? |
字节/字符 |
别名 |
---|---|---|---|---|---|---|
BIG5 |
Big Five |
繁体中文 |
否 |
否 |
1-2 |
WIN950, Windows950 |
EUC_CN |
扩展UNIX编码-中国 |
简体中文 |
是 |
是 |
1-3 |
- |
EUC_JP |
扩展UNIX编码-日本 |
日文 |
是 |
是 |
1-3 |
- |
EUC_JIS_2004 |
扩展UNIX编码-日本, JIS X 0213 |
日文 |
是 |
否 |
1-3 |
- |
EUC_KR |
扩展UNIX编码-韩国 |
韩文 |
是 |
是 |
1-3 |
- |
EUC_TW |
扩展UNIX编码-中国台湾 |
繁体中文 |
是 |
是 |
1-3 |
- |
GB18030 |