+--------------------------------------+
+--------------------------------------+
| 5.7.10-TiDB-v2.1.0-beta-179-g5a0fd2d |
+--------------------------------------+
mysql> show variables like 'coll%';
+----------------------+-------------------+
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_server | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
+----------------------+-------------------+
mysql> show variables like 'char%';
+--------------------------+--------------------------------------------------------+
+--------------------------+--------------------------------------------------------+
| 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 |
+--------------------------+--------------------------------------------------------+
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 ***************************
Create Table: CREATE TABLE `city` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cityname` varchar(20) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
可以看到使用的默认字符集为utf8,排序规则为utf8_bin。
mysql> show create table wuhan.city2\G
*************************** 1. row ***************************
Create Table: CREATE TABLE `city2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cityname` varchar(20) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
Query OK, 0 rows affected (0.14 sec)
mysql> show create table wuhan.city3\G
*************************** 1. row ***************************
Create Table: CREATE TABLE `city3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cityname` varchar(20) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin1 | latin1_swedish_ci |
+--------------------------+----------------------+
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
+--------------------------+----------------------+
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 | city2 | utf8_general_ci |
| wuhan | city3 | latin1_general_ci |
+--------------+------------+-------------------+
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%';
+--------------------------+--------------------------------------------------------+
+--------------------------+--------------------------------------------------------+
| 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 |
+--------------------------+--------------------------------------------------------+
mysql> show variables like 'coll%';
+----------------------+----------+
+----------------------+----------+
| collation_connection | utf8_bin |
| collation_database | utf8_bin |
| collation_server | utf8_bin |
+----------------------+----------+
经过验证默认的字符集就是utf8,排序规则是utf8_bin.
在 TiDB 中实际上 utf8 被当做成了 utf8mb4 来处理。
当前tiBD支持的字符集和校验规则可以分别通过如下方式查询:
+---------+---------------+-------------------+--------+
| 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 |
+---------+---------------+-------------------+--------+
但是上面的设置在tiDB重启后就使用了默认的字符集和和排序规则。
默认的字符集为utf8.TiDB目前不支持将字符集合排序规则写入到配置文件中。
TiDB 使用的时区由 time_zone 全局变量和 session 变量决定。 time_zone 的初始值是机器当前的系统时区为SYSTEM。
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+