character_set_database和character_set_server

以下是网上摘抄的资料

/*

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_servercharacter_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_database和character_set_server_第1张图片

  

为什么新建的库按照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).

 

这又是一个让人郁闷的地方,~~~~(>_<)~~~~。

 

*/

你可能感兴趣的:(character_set_database和character_set_server)