TiDB字符集和时区

这篇具有很好参考价值的文章主要介绍了TiDB字符集和时区。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TiDB 字符集和时区

mysql> select @@version;

+--------------------------------------+

| @@version |

+--------------------------------------+

| 5.7.10-TiDB-v2.1.0-beta-179-g5a0fd2d |

+--------------------------------------+

1 row in set (0.00 sec)

mysql> show variables like 'coll%';

+----------------------+-------------------+

| Variable_name | Value |

+----------------------+-------------------+

| collation_connection | utf8_general_ci |

| collation_server | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

+----------------------+-------------------+

3 rows in set (0.01 sec)

mysql> show variables like 'char%';

+--------------------------+--------------------------------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------------------------------+

| character_sets_dir | /usr/local/mysql-5.6.25-osx10.8-x86_64/share/charsets/ |

| character_set_connection | utf8 |

| character_set_client | utf8 |

| character_set_system | utf8 |

| character_set_results | utf8 |

| character_set_filesystem | binary |

| character_set_server | latin1 |

| character_set_database | latin1 |

+--------------------------+--------------------------------------------------------+

8 rows in set (0.01 sec)

登录进入默认的为utf8.

创建使用默认的字符集和排序规则的表:

mysql> create database wuhan;

Query OK, 0 rows affected (0.12 sec)

mysql> create table wuhan.city(id int not null auto_increment primary key,cityname varchar(20));

Query OK, 0 rows affected (0.14 sec)

mysql> show create table wuhan.city\G

*************************** 1. row ***************************

Table: city

Create Table: CREATE TABLE `city` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cityname` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

1 row in set (0.00 sec)

可以看到使用的默认字符集为utf8,排序规则为utf8_bin。

创建指定字符集和排序规则的表:

mysql> show create table wuhan.city2\G

*************************** 1. row ***************************

Table: city2

Create Table: CREATE TABLE `city2` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cityname` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

1 row in set (0.00 sec)

使用latin1字符集和排序规则的表。

mysql> create table wuhan.city3(id int not null auto_increment primary key,cityname varchar(20)) character set latin1 COLLATE latin1_general_ci;

Query OK, 0 rows affected (0.14 sec)

mysql> show create table wuhan.city3\G

*************************** 1. row ***************************

Table: city3

Create Table: CREATE TABLE `city3` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cityname` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci

1 row in set (0.00 sec)

---查询当前数据库的字符集和排序规则:

mysql> SELECT @@character_set_database, @@collation_database;

+--------------------------+----------------------+

| @@character_set_database | @@collation_database |

+--------------------------+----------------------+

| latin1 | latin1_swedish_ci |

+--------------------------+----------------------+

1 row in set (0.01 sec)

mysql> use wuhan

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SELECT @@character_set_database, @@collation_database;

+--------------------------+----------------------+

| @@character_set_database | @@collation_database |

+--------------------------+----------------------+

| utf8 | utf8_bin |

+--------------------------+----------------------+

1 row in set (0.00 sec)

--查询表的排序规则:

mysql> SELECT t.TABLE_SCHEMA,t.TABLE_NAME,t.TABLE_COLLATION

-> FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA='wuhan';

+--------------+------------+-------------------+

| TABLE_SCHEMA | TABLE_NAME | TABLE_COLLATION |

+--------------+------------+-------------------+

| wuhan | city | utf8_bin |

| wuhan | city2 | utf8_general_ci |

| wuhan | city3 | latin1_general_ci |

+--------------+------------+-------------------+

第二部分 设置字符集和排序规则:

设置为utf8,排序规则则自动设置为utf8_bin.

set names 'utf8';

等同于:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

需要另外设置:

set global collation_server=utf8_bin;

SET CHARACTER SET 'charset_name'

等同于:

SET character_set_client = charset_name;

SET character_set_results = charset_name;

SET collation_connection = @@collation_database;

mysql> show variables like 'char%';

+--------------------------+--------------------------------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------------------------------+

| character_set_connection | utf8 |

| character_set_client | utf8 |

| character_set_system | utf8 |

| character_set_database | utf8 |

| character_set_results | utf8 |

| character_sets_dir | /usr/local/mysql-5.6.25-osx10.8-x86_64/share/charsets/ |

| character_set_filesystem | binary |

| character_set_server | utf8 |

+--------------------------+--------------------------------------------------------+

8 rows in set (0.01 sec)

mysql> show variables like 'coll%';

+----------------------+----------+

| Variable_name | Value |

+----------------------+----------+

| collation_connection | utf8_bin |

| collation_database | utf8_bin |

| collation_server | utf8_bin |

+----------------------+----------+

3 rows in set (0.01 sec)

结论:

经过验证默认的字符集就是utf8,排序规则是utf8_bin.

在 TiDB 中实际上 utf8 被当做成了 utf8mb4 来处理。

当前tiBD支持的字符集和校验规则可以分别通过如下方式查询:

mysql> SHOW CHARACTER SET;

+---------+---------------+-------------------+--------+

| Charset | Description | Default collation | Maxlen |

+---------+---------------+-------------------+--------+

| utf8 | UTF-8 Unicode | utf8_bin | 3 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_bin | 4 |

| ascii | US ASCII | ascii_bin | 1 |

| latin1 | Latin1 | latin1_bin | 1 |

| binary | binary | binary | 1 |

+---------+---------------+-------------------+--------+

5 rows in set (0.00 sec)

mysql> SHOW COLLATION;

目前支持排序规则219个。

但是上面的设置在tiDB重启后就使用了默认的字符集和和排序规则。

默认的字符集为utf8.TiDB目前不支持将字符集合排序规则写入到配置文件中。

时区支持:

TiDB 使用的时区由 time_zone 全局变量和 session 变量决定。 time_zone 的初始值是机器当前的系统时区为SYSTEM。

--查询时区:

mysql> SELECT @@global.time_zone, @@session.time_zone;

+--------------------+---------------------+

| @@global.time_zone | @@session.time_zone |

+--------------------+---------------------+

| SYSTEM | SYSTEM |

+--------------------+---------------------+

1 row in set (0.00 sec)

对于中国用户,按照默认使用即可。文章来源地址https://www.toymoban.com/news/detail-567406.html

到了这里,关于TiDB字符集和时区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle 字符集

      NLS_NCHAR_CHARACTERSET  国家字符集 NLS_CHARACTERSET  字符集 -----字符集和国家字符集的区别 字符集用来存储CHAR,VARCHAR2,CLOB,LONG等类型数据。 国家字符集用以存储NCHAR,NVARCHAR2,NCLOB等类型数据。

    2024年01月24日
    浏览(35)
  • Linux字符集详解

    计算机中处理和储存信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照某种规则将字符存储在计算机中,如’a’用97表示,称为\\\"编码\\\";反之,将计算机中的二进制数解析显示出来,称为\\\"解码\\\"。在解码过程中,

    2024年02月06日
    浏览(39)
  • HTML 字符集

    HTML5 中的默认字符集为 UTF-8。 数字 ASCII ANSI 8859-1 UTF-8 描述 32 space 33 ! ! ! ! exclamation mark 34 \\\" \\\" \\\" \\\" quotation mark 35 # # # # number sign 36 $ $ $ $ dollar sign 37 % % % % percent sign 38 ampersand 39 \\\' \\\' \\\' \\\' apostrophe 40 ( ( ( ( left parenthesis 41 ) ) ) ) right parenthesis

    2023年04月25日
    浏览(31)
  • (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(50)
  • 字符集详解

    计算机底层不可以直接存储字符的。 计算机中底层只能存储二进制(0、1) 。 二进制是可以转换成十进制的。 结论:计算机底层可以表示成十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 ASCII(American Standard Code for Information Interchange,美国信息交

    2024年02月07日
    浏览(34)
  • 【PG】PostgreSQL字符集

    目录 设置字符集 1 设置集群默认的字符集编码 2 设置数据库的字符集编码 查看字符集 1 查看数据字符集编码  2 查看服务端字符集 3 查看客户端字符集 4 查看默认的排序规则和字符分类  被支持的字符集 PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括 单字节字

    2024年02月08日
    浏览(38)
  • 常用ASCII字符集(做题用)

    以下是ASCII字符集的一部分,包括可打印字符和控制字符。ASCII(美国信息交换标准代码)是一种用于表示文本字符的字符编码标准,使用7位二进制数来表示128个不同的字符。 这是ASCII字符集的一个简短示例。其中包含了常见的可打印字符、数字和标点符号,以及控制字符。

    2024年02月08日
    浏览(31)
  • Azure sqlserver 更改字符集

    我们的Azure SQL Server是在2018年建的,当时还不支持汉字的字符集。然后最近发现因为字符集的缘故,出了bug,要调整字符集。然后就照着sqlserver 排序规则(字符集)查看与修改 一通修改。 然后神奇的事情来了,Sql Server 刚建好的时候,可以改DB的字符集。但是已经存在的DB,

    2024年02月11日
    浏览(30)
  • 3.字符集和比较规则简介

    我们知道,计算机中实际存储的是二进制数据,那它是怎么存储字符串呢?当然是建立字符与二进制数据的映射关系了。要建立这个关系,最起码要搞清楚下面这两件事儿。 要把哪些字符映射成二进制数据?也就是界定字符范围。 怎么映射?将字符映射成二进制数据的过程

    2024年02月06日
    浏览(36)
  • Linux的字符集及编码

    Linux 字符集设置 1、查询 (1) 查看当前服务器字符集:  # locale  (2) 查看服务器支持的字符集:  # locale -a 2、修改linux系统字符集的方式有如下两种: (1) 直接设置变量的方式修改,命令如下两条命令: [root~]# LANG=\\\"xxx\\\" 或者  export  LANG=\\\"xxx\\\"  [root ~]# LC_ALL=\\\"xxx\\\"  或者  export LC_ALL

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包