您的位置:首页 > 数据库 > MySQL

编译MySQL缺少gb2312字符集的问题

2013-10-25 00:00 435 查看
最近在安装Percona5.5.18版本MySQL时,发现字符集不全,编译参数如下

CFLAGS=”-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing”

CXX=gcc

CXXFLAGS=”-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing”

export CFLAGS CXX CXXFLAGS

cmake . \

-DCMAKE_BUILD_TYPE:STRING=Release \

-DSYSCONFDIR:PATH=%{_prefix} \

-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \

-DENABLED_PROFILING:BOOL=ON \

-DENABLE_DEBUG_SYNC:BOOL=OFF

-DMYSQL_DATADIR:PATH=%{_prefix}/data \

-DMYSQL_MAINTAINER_MODE:BOOL=OFF \

-DWITH_EXTRA_CHARSETS:STRING=all \

-DWITH_BIG_TABLES:BOOL=ON \

-DWITH_FAST_MUTEXES:BOOL=ON \

-DENABLE-PROFILING:BOOL=ON \

-DWITH_SSL:STRING=bundled \

-DWITH_UNIT_TESTS:BOOL=OFF \

-DWITH_ZLIB:STRING=bundled \

-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \

-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \

-DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_EXTRA_CHARSETS=ALL \

-DENABLED_ASSEMBLER:BOOL=ON \

-DENABLED_LOCAL_INFILE:BOOL=ON \

-DENABLED_THREAD_SAFE_CLIENT:BOOL=ON \

-DENABLED_EMBEDDED_SERVER:BOOL=OFF \

-DWITH_CLIENT_LDFLAGS:STRING=all-static \

-DINSTALL_LAYOUT:STRING=STANDALONE \

-DCOMMUNITY_BUILD:BOOL=ON;

字符集只包含28个,而我们常用的gb2312并不在其中

在上述编译选项中,-DWITH_EXTRA_CHARSETS被定义了两次,这显然是当初设定编译参数的失误:

-DWITH_EXTRA_CHARSETS:STRING=all 和 -DWITH_EXTRA_CHARSETS=ALL

尝试把第二个 -DWITH_EXTRA_CHARSETS=ALL去掉,这次包含全部字符集,有39个字符集

尝试把第二个修改为-DWITH_EXTRA_CHARSETS=all,同样为39个

怀疑跟大小写有关,于是把第二个去掉,把第一个修改为-DWITH_EXTRA_CHARSETS:STRING=ALL,这时候只剩下28个字符集了。

因此可以验证,在编译Percona5.5.18时,需要指定-DWITH_EXTRA_CHARSETS:STRING为小写的all,才能编译所有的字符集。

那么为什么会出现这种情况呢?因为在cmake文件里,编译时只匹配了complex和all两个变量,都是小写的。

字符集的编译定义在文件 cmake/character_sets.cmake中

IF(WITH_EXTRA_CHARSETS MATCHES “complex”)

SET(CHARSETS ${CHARSETS} ${CHARSETS_COMPLEX})

ELSEIF(WITH_EXTRA_CHARSETS MATCHES “all”)

SET(CHARSETS ${CHARSETS} ${CHARSETS_AVAILABLE})

ENDIF()

也就是说,只有当匹配all时,才会包含${CHARSETS_AVAILABLE}里定义的所有字符集

证明也很简单,把上面cmake文件中的小写all改成大写就可以验证了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐