[讨论]让MySql彻底支持中文(linux下)
<P>系统自带的mysql默认字符集不是gbk,因此给数据库的推广应用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程中消耗了我们无数的精力以及系统的资源.经过摸索尝试解决了中文支持问题,经验与大家分享一下.</P><P>先将让slack支持中文,方法可以看"置顶贴",然后重新编译mysql,原来系统mysql的要先用卸载.<BR>login:root</P>
<P>shell> removepkg mysql<BR>shell> groupadd mysql<BR>shell> cd /app<BR>shell> mkdir mysql<BR>shell> chmod 744 mysql<BR>shell> useradd -G mysql -s /bin/bash –p /app/mysql mysql<BR>shell> chown -R mysql.mysql mysql</P>
<P><BR>下载mysql4.x.x</P>
<P>shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -<BR>shell> cd mysql-VERSION<BR>shell> CFLAGS="-O3 -mcpu=pentium3" \ <BR>CXX=gcc \<BR>XXFLAGS="-O3 -mcpu=pentium3 -felide-constructors" \<BR>./configure --prefix=/app/mysql \<BR>--with--charset=gbk \<BR>--with-extra-charsets="gbk gb2312 big5 utf8"\<BR>--with-unix-socket-path=/etc/mysql.sock \<BR>--enable-local-infile \<BR>--enable-thread-safe-client \<BR>--enable-assembler \<BR>--with-client-ldflags=-all-static \<BR>--with-mysqld-ldflags=-all-static </P>
<P>//-mcpu 根据CPU类型优化编译,可以让你的mysq表现更好!可选项目很多:i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp,athlon-mp,winchip-c6, winchip2 , c3.</P>
<P>shell> make<BR>------------------------------------------<BR>错误时候<BR>shell> make clean<BR>再回上一步<BR>------------------------------------------------------------<BR>shell> make install<BR>shell> cp support-files/my-medium.cnf /etc/my.cnf<BR>shell> cd /app/mysql<BR>shell> bin/mysql_install_db --user=root</P>
<P>shell> chown -R root .<BR>shell> chown -R mysql var<BR>shell> chgrp -R mysql .<BR>shell> ./bin/mysqld_safe --user=root --default-character-set=gbk &<BR>shell> ./bin/mysqladmin -u root password 'new-password'<BR>shell> ./bin/mysql -u root --default-character-set=gbk -p </P>
<P>mysql> status<BR>...<BR>Server characterset: gbk<BR>Db characterset: gbk<BR>Client characterset: gbk<BR>Conn. characterset: gbk<BR>....<BR>看见characterset全是gbk就算成功了.<BR>----------------------------------------------------------------------------------------------------<BR>在UTF8字符集的老数据库中,创建中文支持表脚本如下,对字段加上字符集说明<BR>CREATE TABLE `test`.`cn` (<BR>`zh` CHAR(10) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,<BR>`中文` INT(11) NOT NULL<BR>)<BR>ENGINE = MYISAM;<BR>注:CHARACTER SET 写GB2312 和gbk都可以,gbk优于gb2312.</P>
<P>对于新创建的数据库加个默认字符集声明GBK,就不用建表时候每个字段声明了,这样看起来简单流畅,没有特殊的痕迹,建议多采用这种方法.<BR>mysql> CREATE DATABASE dbCN DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;</P>
<P>CREATE TABLE `dbCN`.`cn` (<BR>`zh` CHAR(10) NOT NULL,<BR>`中文` INT(11) NOT NULL<BR>)<BR>ENGINE = MYISAM;</P>
<P>mysql> insert into cn values("真的?",1);<BR>注:如果这些脚本用bin/mysql命令行是输入不了,可以 用mysql query Browser,或者编程执行.<BR>--------------------------------------------------------------------------------------------------------<BR>shell> bin/mysql -u root --default-character-set=gbk -p</P>
<P>mysql>use test<BR>mysql> select * from cn;<BR>+--------+------+<BR>| zh | 中文 |<BR>+--------+------+<BR>| 真的? | 1 | <BR>+--------+------+<BR>1 row in set (0.00 sec)</P>
<P>---------------------------------------------<BR>最后修改启动文件/etc/rc.d/rc.mysqld</P>
<P>改路径/app/mysql/bin/mysqld_safe<BR>改路径/app/mysql/var/web.pid</P>
<P>/app/mysql/bin/mysqld_safe 后面加入 --user=root --default-character-set=gbk<BR></P>
页:
[1]
