数据库

 首页 > 数据库 > SqlServer > 让你的MySQL数据库彻底与中文联姻

让你的MySQL数据库彻底与中文联姻

分享到:
【字体:
导读:
         摘要: 系统自带的MySQL默认字符集不是gbk,因此给数据库的推广利用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程中耗费了我们无数的精力以及系统的资源。经过摸索...

让你的MySQL数据库彻底与中文联姻

系统自带的MySQL默认字符集不是gbk,因此给数据库的推广利用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程中耗费了我们无数的精力以及系统的资源。经过摸索尝试解决了中文支撑标题,经验与大家分享一下。

先将让slack支撑中文,方法可以看“linuxsir.org 之Slackware讨论区”,然后重新编译MySQL,本来系统MySQL的要先用卸载。

 

以下为引用的内容:
login:root
shell> removepkg mysql
shell> groupadd mysql
shell> cd /app
shell> mkdir mysql
shell> chmod 744 mysql
shell> useradd -G mysql -s /bin/bash –p /app/mysql mysql
shell> chown -R mysql.mysql mysql
下载MySQL4.x.x:


shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> CFLAGS="-O3 -mcpu=pentium3"
CXX=gcc
XXFLAGS="-O3 -mcpu=pentium3 -felide-constructors"
./configure --prefix=/app/mysql
--with--charset=gbk
--with-extra-charsets="gbk gb2312 big5 utf8"
--with-unix-socket-path=/etc/mysql.sock
--enable-local-infile
--enable-thread-safe-client
--enable-assembler
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static

//-mcpu 根据CPU类型优化编译,可以让你的MySQL表现更好!
可选项目很多: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

shell> make
------------------------------------------
错误时候
shell> make clean
再回上一步
---------------------------------------
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /app/mysql
shell> bin/mysql_install_db --user=root
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> ./bin/mysqld_safe --user=root
--default-character-set=gbk &
shell> ./bin/mysqladmin -u root password 'new-password'
shell> ./bin/mysql -u root --default-character-set=gbk -p
mysql> status
...
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
....
看见characterset全是gbk就算成功了。

在UTF8字符集的老数据库中,创立中文支撑表脚本如下,对字段加上字符集阐明:


CREATE TABLE `test`.`cn` (
`zh` CHAR(10) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
`中文` INT(11) NOT NULL
)
ENGINE = MYISAM;

注:CHARACTER SET 写GB2312 和gbk都可以,gbk优于gb2312。

对于新创立的数据库加个默认字符集声明GBK,就不用建表时候每个字段声明了,这样看起来简略流畅,没有特别的痕迹,建议多采用这种方法。

mysql> CREATE DATABASE dbCN DEFAULT CHARACTER SET
gbk COLLATE gbk_chinese_ci;
CREATE TABLE `dbCN`.`cn` (
`zh` CHAR(10) NOT NULL,
`中文` INT(11) NOT NULL
)
ENGINE = MYISAM;
mysql> insert into cn values("真的?",1);

注:假如这些脚本用bin/MySQL命令行是输进不了,可以用MySQL query Browser,或者编程履行。


----------------------------------------------
shell> bin/mysql -u root --default-character-set=gbk -p
mysql>use test
mysql> select * from cn;
-------- ------
| zh | 中文 |
-------- ------
| 真的?| 1 |
-------- ------
1 row in set (0.00 sec)
---------------------------------------------

最后修正启动文件/etc/rc.d/rc.mysqld,改路径/app/mysql/bin/mysqld_safe,改路径/app/mysql/var/web.pid/app/mysql/bin/mysqld_safe 后面参加 --user=root --default-character-set=gbk。



让你的MySQL数据库彻底与中文联姻
分享到:
解读SQL Server 2008的新语句MERGE
解读SQL Server 2008的新语句MERGE SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行断定性的插进、更新和删除这样复杂的把持,应用新的MERGE语句,开发者用一条命令就可以完成。 对两个表进行信息同步时,有三步把持要进行。首先要处理任何需要插进目标数据表的新行。其...
解析SQL Server数据利用在不同的数据库中
解析SQL Server数据利用在不同的数据库中 在软件开发的初始阶段,开发商们总是想把全部系统的最小的细节设计好了,然后再往单线程的编写代码。这样软件开发完成需要很长时间,但开发商们一直都在这么做。 所以开发者不得不往缩小他们的野心,先设计好一个小系统,然而这个小系统只是解决了全部系统艰苦中的一部分。这导致了...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……