OceanBase教程FG054-OceanBase字符集时区配置实战
本文档风哥主要介绍OceanBase数据库字符集时区配置相关知识,包括OceanBase字符集的概念与类型、OceanBase时区的概念与设置、OceanBase排序规则的概念、OceanBase租户字符集配置、OceanBase租户时区配置、OceanBase表级字符集配置等内容,风哥教程参考OceanBase官方文档字符集管理、国际化支持等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 OceanBase字符集的概念与类型
字符集(Character Set)是数据库中用于存储和处理文本数据的编码规则。OceanBase支持多种字符集,以满足不同业务场景的需求。更多视频教程www.fgedu.net.cn
- utf8mb4:推荐使用的字符集,支持完整的Unicode字符,包括Emoji
- utf8mb3:utf8的别名,最多支持3字节UTF-8字符
- gbk:简体中文编码,兼容GB2312
- gb18030:国家标准字符集,支持中文、少数民族文字
- latin1:西欧语言字符集
- binary:二进制字符集,区分大小写
1.2 OceanBase时区的概念与设置
时区(Time Zone)用于处理日期时间数据的时区转换。OceanBase支持多种时区设置方式。
1. 系统时区(system_time_zone)
– 操作系统级别的时区设置
– 影响数据库服务器的默认时区
– 通常在启动时确定
2. 会话时区(time_zone)
– 当前会话的时区设置
– 可以动态修改
– 影响当前会话的日期时间显示
3. 时区表示方式
– 偏移量表示:+08:00、-05:00
– 时区名称:Asia/Shanghai、America/New_York
– 特殊值:SYSTEM(使用系统时区)、UTC(协调世界时)
4. 时区影响范围
– TIMESTAMP类型:存储为UTC,显示时转换
– DATETIME类型:不存储时区信息
– 时区转换函数:CONVERT_TZ()
1.3 OceanBase排序规则的概念
排序规则(Collation)定义了字符的比较和排序规则。
1. 常见排序规则
– utf8mb4_general_ci:不区分大小写,通用排序
– utf8mb4_bin:区分大小写,二进制排序
– utf8mb4_unicode_ci:基于Unicode排序规则
– utf8mb4_0900_ai_ci:MySQL 8.0默认排序规则
– gbk_chinese_ci:GBK中文排序
– gbk_bin:GBK二进制排序,风哥提示:。
2. 排序规则命名规则
– 字符集名_语言/地区_特性
– ci:case insensitive(不区分大小写)
– cs:case sensitive(区分大小写)
– bin:binary(二进制)
– ai:accent insensitive(不区分重音)
– as:accent sensitive(区分重音)
3. 排序规则选择建议
– 一般业务:utf8mb4_general_ci
– 需要区分大小写:utf8mb4_bin
– 多语言场景:utf8mb4_unicode_ci
Part02-生产环境规划与建议
2.1 OceanBase字符集选择建议
1. 推荐字符集:utf8mb4
优点:
– 支持完整的Unicode字符集
– 支持Emoji表情符号
– 兼容性好,与其他系统交互方便,学习交流加群风哥微信: itpux-com。
– 未来扩展性强
使用场景:
– 互联网应用
– 多语言业务
– 需要支持Emoji的业务
– 与MySQL兼容的业务
2. 备选字符集:gbk/gb18030
使用场景:
– 纯中文业务
– 与遗留系统对接
– 政府、金融行业(符合国标要求)
3. 字符集选择原则
– 优先选择utf8mb4
– 考虑业务实际需求
– 考虑与上下游系统的兼容性
– 考虑存储空间(utf8mb4比gbk占用更多空间)
4. 字符集层级
– 服务器级(默认)
– 数据库级
– 表级
– 列级
– 会话级
2.2 OceanBase时区选择建议
1. 推荐时区设置
– 系统时区:保持与操作系统一致
– 数据库时区:+08:00(中国标准时间)
– 应用连接时区:根据用户所在时区设置
2. 多时区业务处理
– 数据库统一使用UTC存储,学习交流加群风哥QQ113257174。
– 应用层根据用户时区转换显示
– 使用TIMESTAMP类型存储带时区的时间
3. 时区设置原则
– 数据库层统一时区
– 应用层处理时区转换
– 避免在数据库层频繁转换时区
– 记录原始时区信息
4. 时区配置建议
– 国内业务:+08:00
– 海外业务:UTC或根据主要用户群体设置
– 全球业务:UTC存储,应用层转换
2.3 OceanBase排序规则选择建议
1. 推荐排序规则
– 一般业务:utf8mb4_general_ci
– 账号、密码等:utf8mb4_bin(区分大小写)
– 多语言排序:utf8mb4_unicode_ci
2. 排序规则选择原则
– 根据业务需求选择是否区分大小写
– 考虑查询性能(_ci通常比_bin快)
– 考虑排序准确性(_unicode_ci更准确)
3. 常见场景配置
用户表(区分大小写):
CREATE TABLE fgedu_user (
username VARCHAR(50) COLLATE utf8mb4_bin,
…
);
普通业务表(不区分大小写):
CREATE TABLE fgedu_order (,更多视频教程www.fgedu.net.cn。
order_name VARCHAR(100) COLLATE utf8mb4_general_ci,
…
);
Part03-生产环境项目实施方案
3.1 OceanBase租户字符集配置
3.1.1 查看当前字符集设置
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SHOW VARIABLES LIKE ‘character_set%’;”
+————————–+———+
| Variable_name | Value |
+————————–+———+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb4 |
+————————–+———+
# 查看排序规则
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SHOW VARIABLES LIKE ‘collation%’;”
+———————-+——————–+
| Variable_name | Value |
+———————-+——————–+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+———————-+——————–+,更多学习教程公众号风哥教程itpux_com。
# 查看支持的字符集
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SHOW CHARACTER SET;”
+———+———————————+———————+——–+
| Charset | Description | Default collation | Maxlen |
+———+———————————+———————+——–+
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
| utf8mb3 | UTF-8 Unicode | utf8mb3_general_ci | 3 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
| latin1 | Latin1 | latin1_swedish_ci | 1 |
| binary | Binary pseudo charset | binary | 1 |
+———+———————————+———————+——–+
3.1.2 修改租户字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e “SET NAMES utf8mb4;”
Query OK, 0 rows affected
# 修改数据库字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
CREATE DATABASE fgedudb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
”
Query OK, 0 rows affected,from DB视频:www.itpux.com。
# 修改现有数据库字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
ALTER DATABASE fgedudb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
”
Query OK, 0 rows affected
# 查看数据库字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = ‘fgedudb’;
”
+————-+—————————-+————————+
| SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+————-+—————————-+————————+
| fgedudb | utf8mb4 | utf8mb4_general_ci |
+————-+—————————-+————————+
3.2 OceanBase租户时区配置
3.2.1 查看和设置时区
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SHOW VARIABLES LIKE ‘%time_zone%’;”
+——————+——–+
| Variable_name | Value |
+——————+——–+
| system_time_zone | CST |
| time_zone | +08:00 |
+——————+——–+
# 查看支持的时区
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM mysql.time_zone_name LIMIT 10;”
+——————–+————–+
| Name | Time_zone_id |
+——————–+————–+
| Africa/Abidjan | 1 |
| Africa/Accra | 2 |
| Africa/Addis_Ababa | 3 |
| Africa/Algiers | 4 |
| Africa/Asmara | 5 |
+——————–+————–+
# 修改会话时区
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e “SET time_zone = ‘+00:00’;”
Query OK, 0 rows affected
# 修改全局时区
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SET GLOBAL time_zone = ‘+08:00’;”
Query OK, 0 rows affected
# 使用时区名称设置
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e “SET time_zone = ‘Asia/Shanghai’;”
Query OK, 0 rows affected
3.2.2 时区转换实战
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
— 设置当前会话时区为东八区
SET time_zone = ‘+08:00’;
— 创建测试表
CREATE TABLE fgedu_timezone_test (
id INT PRIMARY KEY,
dt DATETIME,
ts TIMESTAMP
);
— 插入数据
INSERT INTO fgedu_timezone_test VALUES
(1, ‘2024-01-20 12:00:00’, ‘2024-01-20 12:00:00’);
— 查询数据(东八区)
SELECT * FROM fgedu_timezone_test;
”
+—-+———————+———————+
| id | dt | ts |
+—-+———————+———————+
| 1 | 2024-01-20 12:00:00 | 2024-01-20 12:00:00 |
+—-+———————+———————+
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
— 切换时区为UTC
SET time_zone = ‘+00:00’;
— 再次查询
SELECT * FROM fgedu_timezone_test;
”
+—-+———————+———————+
| id | dt | ts |
+—-+———————+———————+
| 1 | 2024-01-20 12:00:00 | 2024-01-20 04:00:00 |
+—-+———————+———————+
— 注意:DATETIME类型不随时区变化,TIMESTAMP类型会转换
# 使用CONVERT_TZ函数转换时区
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT
dt,
CONVERT_TZ(dt, ‘+08:00’, ‘+00:00’) as dt_utc
FROM fgedu_timezone_test;
”
+———————+———————+
| dt | dt_utc |
+———————+———————+
| 2024-01-20 12:00:00 | 2024-01-20 04:00:00 |
+———————+———————+
# 清理测试表
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e “DROP TABLE fgedu_timezone_test;”
3.3 OceanBase表级字符集配置
3.3.1 创建表时指定字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
CREATE TABLE fgedu_user (
user_id BIGINT PRIMARY KEY,
username VARCHAR(50) COLLATE utf8mb4_bin COMMENT ‘区分大小写’,
nickname VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT ‘不区分大小写’,
email VARCHAR(100),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
”
Query OK, 0 rows affected
# 查看表字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = ‘fgedudb’ AND TABLE_NAME = ‘fgedu_user’;
”
+————-+————————+
| TABLE_NAME | TABLE_COLLATION |
+————-+————————+
| fgedu_user | utf8mb4_general_ci |
+————-+————————+
# 查看列字符集
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = ‘fgedudb’ AND TABLE_NAME = ‘fgedu_user’;
”
+————-+——————–+————————+
| COLUMN_NAME | CHARACTER_SET_NAME | COLLATION_NAME |
+————-+——————–+————————+
| user_id | NULL | NULL |
| username | utf8mb4 | utf8mb4_bin |
| nickname | utf8mb4 | utf8mb4_general_ci |
| email | utf8mb4 | utf8mb4_general_ci |
| create_time | NULL | NULL |
+————-+——————–+————————+
Part04-生产案例与实战讲解
4.1 OceanBase UTF8MB4字符集配置案例
某互联网公司配置UTF8MB4字符集支持Emoji表情的案例:
– 支持用户昵称包含Emoji表情
– 支持评论内容包含Emoji表情
– 与现有MySQL系统兼容
# 配置过程
1. 创建租户时指定字符集
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
CREATE TENANT IF NOT EXISTS fgedu_emoji
PRIMARY_ZONE=’zone1,zone2,zone3′,
RESOURCE_POOL_LIST=(‘fgedu_pool’)
SET ob_compatibility_mode=’mysql’,
default_charset=’utf8mb4′,
default_collation=’utf8mb4_general_ci’;
”
2. 创建数据库
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_emoji -p -e ”
CREATE DATABASE fgedu_emoji_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE fgedu_emoji_db;
”
3. 创建表
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_emoji -p -e ”
CREATE TABLE fgedu_comments (
comment_id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
content VARCHAR(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
emoji_name VARCHAR(100) CHARACTER SET utf8mb4,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
”
4. 插入Emoji数据测试
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_emoji -p -e ”
INSERT INTO fgedu_emoji_db.fgedu_comments (user_id, content, emoji_name) VALUES
(10001, ‘这个产品太棒了!👍’, ‘thumbs_up’),
(10002, ‘非常喜欢😍,推荐给大家’, ‘heart_eyes’),
(10003, ‘哈哈😂,太好笑了’, ‘joy’);
”
Query OK, 3 rows affected
5. 查询验证
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_emoji -p -e ”
SELECT * FROM fgedu_emoji_db.fgedu_comments;
”
+————+———+—————————+————-+———————+
| comment_id | user_id | content | emoji_name | create_time |
+————+———+—————————+————-+———————+
| 1 | 10001 | 这个产品太棒了!👍 | thumbs_up | 2024-01-20 10:00:00 |
| 2 | 10002 | 非常喜欢😍,推荐给大家 | heart_eyes | 2024-01-20 10:01:00 |
| 3 | 10003 | 哈哈😂,太好笑了 | joy | 2024-01-20 10:02:00 |
+————+———+—————————+————-+———————+
# Emoji支持配置成功
4.2 OceanBase多时区业务配置案例
某跨国公司的多时区业务配置案例:
– 用户分布在全球各地
– 需要支持多时区显示
– 数据统一存储,按需显示
# 配置方案
1. 数据库使用UTC存储
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
CREATE TENANT IF NOT EXISTS fgedu_global
PRIMARY_ZONE=’zone1,zone2,zone3′,
RESOURCE_POOL_LIST=(‘fgedu_pool’)
SET ob_compatibility_mode=’mysql’,
time_zone=’+00:00′;
”
2. 创建业务表
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_global -p -e ”
CREATE TABLE fgedu_global_orders (
order_id BIGINT PRIMARY KEY,
user_id BIGINT,
user_timezone VARCHAR(50) COMMENT ‘用户所在时区’,
order_time TIMESTAMP COMMENT ‘订单时间(UTC)’,
local_order_time DATETIME COMMENT ‘用户本地时间’,
amount DECIMAL(18,2)
);
”
3. 插入数据(应用层处理时区转换)
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_global -p -e ”
— 中国用户订单(东八区)
INSERT INTO fgedu_global_orders VALUES
(1, 10001, ‘Asia/Shanghai’,
CONVERT_TZ(‘2024-01-20 10:00:00’, ‘+08:00’, ‘+00:00’),
‘2024-01-20 10:00:00’, 199.99);
— 美国用户订单(西五区)
INSERT INTO fgedu_global_orders VALUES
(2, 10002, ‘America/New_York’,
CONVERT_TZ(‘2024-01-19 21:00:00’, ‘-05:00’, ‘+00:00’),
‘2024-01-19 21:00:00’, 299.99);
— 英国用户订单(零时区)
INSERT INTO fgedu_global_orders VALUES
(3, 10003, ‘Europe/London’,
‘2024-01-20 02:00:00’,
‘2024-01-20 02:00:00’, 399.99);
”
4. 按不同时区查询
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_global -p -e ”
— 管理员查看(UTC)
SELECT order_id, user_id, order_time, amount
FROM fgedu_global_orders;
”
+———-+———+———————+——–+
| order_id | user_id | order_time | amount |
+———-+———+———————+——–+
| 1 | 10001 | 2024-01-20 02:00:00 | 199.99 |
| 2 | 10003 | 2024-01-20 02:00:00 | 399.99 |
| 3 | 10002 | 2024-01-20 02:00:00 | 299.99 |
+———-+———+———————+——–+
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_global -p -e ”
— 中国用户查看(东八区)
SET time_zone = ‘+08:00’;
SELECT order_id, user_id, order_time, amount
FROM fgedu_global_orders WHERE user_id = 10001;
”
+———-+———+———————+——–+
| order_id | user_id | order_time | amount |
+———-+———+———————+——–+
| 1 | 10001 | 2024-01-20 10:00:00 | 199.99 |
+———-+———+———————+——–+
# 多时区配置成功
4.3 OceanBase字符集迁移案例
将现有数据库从GBK迁移到UTF8MB4的案例:
– 原数据库使用GBK字符集
– 需要支持Emoji和多语言
– 需要迁移到UTF8MB4
# 迁移方案
1. 导出原数据库
$ mysqldump -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p \
–default-character-set=gbk \
–set-charset \
fgedudb > /backup/fgedudb_gbk.sql
2. 创建新数据库(UTF8MB4)
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
CREATE DATABASE fgedudb_utf8mb4 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
”
3. 修改导出文件字符集
$ sed -i ‘s/CHARSET=gbk/CHARSET=utf8mb4/g’ /backup/fgedudb_gbk.sql
$ sed -i ‘s/COLLATE=gbk_chinese_ci/COLLATE=utf8mb4_general_ci/g’ /backup/fgedudb_gbk.sql
4. 导入到新数据库
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p \
–default-character-set=utf8mb4 \
fgedudb_utf8mb4 < /backup/fgedudb_gbk.sql
5. 验证数据
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e "
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'fgedudb_utf8mb4';
"
+-------------+------------------------+
| TABLE_NAME | TABLE_COLLATION |
+-------------+------------------------+
| fgedu_user | utf8mb4_general_ci |
| fgedu_order | utf8mb4_general_ci |
+-------------+------------------------+
6. 数据校验
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e "
-- 对比记录数
SELECT 'fgedu_user' as table_name, COUNT(*) as cnt FROM fgedudb.fgedu_user
UNION ALL
SELECT 'fgedu_user_utf8mb4', COUNT(*) FROM fgedudb_utf8mb4.fgedu_user;
"
+--------------------+--------+
| table_name | cnt |
+--------------------+--------+
| fgedu_user | 100000 |
| fgedu_user_utf8mb4 | 100000 |
+--------------------+--------+
7. 切换应用(应用停服窗口)
-- 重命名数据库
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e "
RENAME DATABASE fgedudb TO fgedudb_backup;
RENAME DATABASE fgedudb_utf8mb4 TO fgedudb;
"
# 字符集迁移完成
Part05-风哥经验总结与分享
5.1 OceanBase字符集时区最佳实践
1. 字符集选择
– 统一使用utf8mb4字符集
– 排序规则使用utf8mb4_general_ci
– 需要区分大小写的列使用utf8mb4_bin
2. 时区设置
– 国内业务统一使用+08:00
– 全球业务使用UTC存储,应用层转换
– 避免在数据库层频繁转换时区
3. 配置层级
– 租户级别设置默认值
– 数据库级别继承租户设置
– 表级别按需覆盖
– 列级别特殊处理
4. 应用开发
– 连接数据库时指定字符集
– 应用层处理时区转换
– 统一使用UTF-8编码
5. 监控检查
– 定期检查字符集设置
– 监控乱码问题
– 检查时区转换是否正确
5.2 OceanBase字符集问题排查
1. 乱码问题排查
检查客户端字符集:
SHOW VARIABLES LIKE ‘character_set_client’;
SHOW VARIABLES LIKE ‘character_set_connection’;
SHOW VARIABLES LIKE ‘character_set_results’;
检查数据库字符集:
SHOW CREATE DATABASE fgedudb;
检查表字符集:
SHOW CREATE TABLE fgedu_user;
2. 时区问题排查
检查时区设置:
SHOW VARIABLES LIKE ‘%time_zone%’;
检查时间数据:
SELECT NOW();
SELECT @@time_zone;
3. 排序问题排查
检查排序规则:
SHOW VARIABLES LIKE ‘collation%’;
测试排序:
SELECT ‘A’ = ‘a’ COLLATE utf8mb4_general_ci; — 返回1
SELECT ‘A’ = ‘a’ COLLATE utf8mb4_bin; — 返回0
4. 常用排查命令
# 查看所有字符集设置
SHOW VARIABLES LIKE ‘character%’;
# 查看所有排序规则
SHOW COLLATION;
# 查看特定字符集的排序规则
SHOW COLLATION WHERE CHARSET = ‘utf8mb4’;
5.3 OceanBase字符集常见问题
Q1: 插入Emoji表情报错
A1: 确保使用utf8mb4字符集,检查表和列的字符集设置
Q2: 查询结果乱码
A2: 检查客户端字符集设置,使用SET NAMES utf8mb4
Q3: 字符串比较结果不符合预期
A3: 检查排序规则,_ci不区分大小写,_bin区分大小写
Q4: 时区显示不正确
A4: 检查time_zone变量设置,使用SET time_zone=’+08:00′
Q5: 如何修改已有表的字符集?
A5: 使用ALTER TABLE CONVERT TO CHARACTER SET utf8mb4
Q6: 字符集转换后数据丢失?
A6: 确保目标字符集包含源字符集的所有字符
Q7: 如何查看表的字符集?
A7: 使用SHOW CREATE TABLE或查询information_schema
Q8: TIMESTAMP和DATETIME的时区处理有什么区别?
A8: TIMESTAMP存储为UTC,显示时转换;DATETIME不转换
Q9: 如何设置全局字符集?
A9: 使用SET GLOBAL character_set_server=’utf8mb4′
Q10: 应用连接时如何指定字符集?
A10: 在连接字符串中添加charset=utf8mb4参数
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
