以下是网上摘抄的资料
/*
character_set_server: 服务器安装时指定的默认字符集设定。
character_set_database: 数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
建表时候,字段字符集的选取方式如下:
1. * if 字段指定的字符集
2. * else if 表指定的字符集
3. * else if @@character_set_database
4. * else @@character_set_server (如果没有设定,这个值为latin1)
*/
按照网上上面的说法,如果character_set_server和character_set_database变量的值不同,则新建数据库的字符集以character_set_server为准。
mysql> show variables like 'char%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 rows in set (0.00 sec)</span>
为什么新建的库按照character_set_server,而不是按照character_set_database呢。
真是很郁闷。难道是版本问题吗?我的mysql版本是 5.6.20-r5436-log 。
暂且不管这个问题了,我将这两个参数都配置成一致的就行了。
下面是具体的配置步骤:
1:在线修改
mysql> set character_set_server = utf8; Query OK, 0 rows affected (0.00 sec) mysql> set character_set_database = utf8; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'char%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 rows in set (0.01 sec)</span>
2:修改配置文件
在/etc/my.cnf中添加一行:
character-set-server = utf8
记得重启下Mysql,验证配置文件里的变量是否生效。
即使在配置文件里根本就没有配置character_set_database,重启mysql后character_set_database变量值也会和character_set_server保持一致,故只需要配置character_set_server就行了。
/*
网上的资料(如http://www.java123.net/v/984515-2.html)大都在配置文件里分别配置这两个变量,在[mysqld]下添加:
default-character-set=utf8
character-set-server = utf8
但是,我试验了不行,只要添加上default-character-set=utf8,重启mysql服务就起不来了,报错:Starting MySQL...The server quit without updating PID file [FAILED]ysql/data/ser6-51.pid).
这又是一个让人郁闷的地方,~~~~(>_<)~~~~。
*/