今天一位同事问及:如何在Trafodion中查看当前数据库的字符集?我四下一想,居然没想出怎样回答,尴尬。。
说实话,之前的概念一直就是Trafodion默认的字符集是ISO88591,这种字符集默认是会中文乱码的,如果希望支持中文,需要设置cqd traf_default_col_charset ‘utf8’; 或者直接在”MD“.defaults表中插入此cqd从而修改数据库级别的字符集。
后来在社区中提问得到解答才突然反应过来,前面这个cqd的当前值不就是代表数据库的默认字符集嘛,于是想到可以使用showcontrol default来查看cqd的值。
>>showcontrol default TRAF_DEFAULT_COL_CHARSET;
No CONTROL QUERY DEFAULT TRAF_DEFAULT_COL_CHARSET settings are in effect.
No externalized DEFAULTS attribute TRAF_DEFAULT_COL_CHARSET exists.
--- SQL operation complete.
然后提示信息说没有找到这个cqd,这是因为这个cqd并没有在当前session中设置,所以默认不可见,如果想查看,需要把另外一个cqd showcontrol_show_all打开才可查看。
>>cqd showcontrol_show_all 'on';
--- SQL operation complete.
>>showcontrol default TRAF_DEFAULT_COL_CHARSET;
No CONTROL QUERY DEFAULT TRAF_DEFAULT_COL_CHARSET settings are in effect.
Current DEFAULTS
TRAF_DEFAULT_COL_CHARSET ISO88591
现在我们再尝试把UTF8设置为数据库级别的字符集,执行以下命令并重启DCS。
>>insert into "_MD_".defaults values('TRAF_DEFAULT_COL_CHARSET','UTF8','',1);
--- 1 row(s) inserted.
再次查看字符集,通过以下结果得知,默认字符集已经变成UTF8了。
>>cqd showcontrol_show_all 'on';
--- SQL operation complete.
>>showcontrol default TRAF_DEFAULT_COL_CHARSET;
No CONTROL QUERY DEFAULT TRAF_DEFAULT_COL_CHARSET settings are in effect.
Current DEFAULTS
TRAF_DEFAULT_COL_CHARSET UTF8
--- SQL operation complete.