MySQL的几个character_set变量的说明

参考: http://www.th7.cn/db/mysql/201412/84636.shtml

MySQL关于character有如下8个变量:

character_set_client

character_set_connection

character_set_database

character_set_filesystem

character_set_results

character_set_server

character_set_system

character_sets_dir

结论:

    character_set_clientcharacter_set_connectioncharacter_set_results3个参数值是由客户端每次连接进来设置的,和服务器端没关系。

我们登陆进mysql后,执行 set names utf8; 实际就是同时修改上面的这3个参数值的。

环境:

CentOS6.7x86_64

Percona Server 5.7 (server段设置的是character-set-server= utf8)

在Windows上使用CMD命令行去连接node1,如下图:

在Windows上使用SQLyog命令行去连接node1,如下图:

可以看到2个工具连接到同一个服务器上,显示出的参数却不一样的。

从官方文档中可以看出character_set_connection、character_set_client、character_set_results三个字符集什么时候用到。

从实际上可以看到,当客户端连接服务器的时候,它会将自己想要的字符集名称发给mysql服务器,然后服务器就会使用这个字符集去设置character_set_clientcharacter_set_connectioncharacter_set_results这三个值。如cmd是用gbk,而SQLyog是用utf8.

如果我们想告诉mysql server自己本次连接想使用latin1,则命令行下可以如下写法:

mysql -uroot -h 192.168.2.11 [email protected] --default-character-set=latin1

此外,要修改上面的3个字符集的话,

还可以在my.cnf的[mysql]段里面增加:

default-character-set=latin1

也可以登录进去后,执行set names latin1的效果相同。

其他几个参数:

character_set_database

这个是当前所在的数据库字符集。如果没有切换到其他数据库,则character_set_database显示的和character_set_server一致。

例:切换到一个默认是gbk的数据库里,执行showvariables like ‘character_set_database‘;看到的就是gbk

character_set_filesystem

把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem,默认binary是不做任何转换的

character_set_system

character_set_system是个只读数据不能更改。也没多少改的意义,他是元数据的编码,相信不会有人用中文做数据库名和字段名之类的吧,这个字段和具体存储的数据无关。

character_sets_dir

不清楚、。。。

时间: 2024-10-28 22:02:51

MySQL的几个character_set变量的说明的相关文章

MySQL 5.6中的变量

这篇文章介绍的是MySQL  5.6中的变量,基本是我以前学习MySQL 5.6手册时整理而来. 基础概念 MySQL中的变量可分为以下几种: 1. MySQL系统变量:该类型变量反映了MySQL服务器是如何配置的.每一个系统变量都有一个默认值.系统变量可以在MySQL配置文件中进行设置,或使用MySQL启动选项进行设置.大多数系统变量都可以在MySQL运行时使用SET命令进行动态修改. 2. MySQL状态变量:该类型变量反映了MySQL服务器的运行状态. 变量按作用范围可分为: 1. 全局变

linux CentOS 系统下如何将php和mysql命令加入到环境变量中

在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php和mysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/中). 方法一:直接运行命令export PATH=$PA

mysql查询语句中自定义变量(转)

转:http://blog.sina.com.cn/s/blog_1512521570102wrfl.htmlselect cost,@a:[email protected]+1 from testone,(select @a:=0) as a; mysql中变量不用事前申明,在用的时候直接用"@变量名"使用就可以了. 第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量 第二种用法:select @num:=1; 或 se

mysql中while循环以及变量声明以及dilimiter

首先我们查看一个正确的完整的一个存储过程 ①其中delimiter命令解释如下:默认情况下,delimiter是分号:.在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令. 这种默认以分号执行命令会使存储过程创建不完整就被执行,显然会报错.所以用delimiter命令将默认的:变成||(也可以是&& ,//什么的).执行完后 把某段语句写完之后,再用||结束,提交执行.最后用delimiter 命令修改回来. ②mysql中局部变量声明只可写在sql语句块中,

mysql查询语句中用户变量的使用

先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice`.`read_time` , `f`.`fnum` , `f`.`forg` , `f`.`fdst` , `f`.`actual_parking` AS `parking` , `f`.`scheduled_deptime` , `f`.`estimated_deptime` , `f`.`ac

Linux运维 第四阶段 (二) MySQL命令、数据类型、变量

一.修改密码的三种方式: 1.#mysqladmin  -u  USERNAME -h  HOSTNAME  -p password  'new_password'  (输入旧密码设置新密码) -u (--user) -p (--password) -h (--host) 例:#mysqladmin  -u  root -h  localhost  -p password  'redhat' 2.>SET  PASSWORD  FOR  'USERNAME'@'HOST'=PASSWORD('n

linux中mysql配置文件和jdk环境变量

mysql配置文件 [client]default-character-set = utf8mb4 [mysql]socket = /var/lib/mysql/mysql.sockdefault-character-set = utf8mb4 [mysqld]skip-name-resolveport = 3306socket = /var/lib/mysql/mysql.sockbasedir=/usr/local/mysqldatadir=/var/lib/mysqlmax_connect

python连接mysql获取数据 字符串 获取变量

python脚本中的变量经常会变动,所以考虑写到mysql里面如何获取mysql里面数据作为参数,参考如下脚本: #!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("3.12.5.1", "root", "root", "test", charset='utf8') # 使用cursor()方法获取操作

将php和mysql命令加入到环境变量中

方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql/bin 使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效,只是临时生效. 方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/webserver/php/bin 和 /usr/local/webserver/