Leonard
(Hacker Byb Hr4 Nu)
1
【TiDB 使用环境】测试
【TiDB 版本】v8.5.1
【操作系统】
【部署方式】云上部署(什么云)/机器部署(什么机器配置、什么硬盘)
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
字符集和排序规则怎么修改。
为什么设置了之后set global collation_server=‘utf8_general_ci’;
还是使用utf8_bin排序
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
小龙虾爱大龙虾
(Minghao Ren)
2
1 个赞
kkpeter
(Upstream889)
3
MySQL utf8 默认的排序规则是 utf8_general_ci, 为什么TiDB是 utf8_bin, 这个地方兼容性有问题那
1 个赞
kkpeter
(Upstream889)
4
貌似也没找到修改的地方, 只有个default_collation_for_utf8mb4 能修改utf8mb4的
1 个赞
Leonard
(Hacker Byb Hr4 Nu)
5
哈哈,实在是找不到utf8的默认排序规则在哪设置了。
zhanggame1
(Ti D Ber G I13ecx U)
7
库本身不重要,排序从database 到表到列都有设置,设置到合适地方就行
kkpeter
(Upstream889)
8
问题在于迁移, mysql 几万张表迁移到tidb,要一张一张改
zhanggame1
(Ti D Ber G I13ecx U)
9
建表语句里面没有排序规则吗,正常应该带的,比如show create table 就会带啊,迁移过来你应该也不用改排序规则
kkpeter
(Upstream889)
10
MySQL里面utf8_general_ci 是默认排序规则, show create table 是不会展示的。 迁移工具拿到的建表语句就没有排序规则
zhanggame1
(Ti D Ber G I13ecx U)
11
那是迁移工具问题不是mysql问题,mysql正常获取建表语句使用show create table是带完整的字符集排序信息的
kkpeter
(Upstream889)
12
你可以测试一下, 我已经测试了很多遍了, 导出工具用dumpling也是一样的结果
Kongdom
(Kongdom)
14
应该是创建的时候是什么,show create table的时候就是什么
CREATE TABLE `t2025032501` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`c_int` int(11) NOT NULL,
`c_varchar` varchar(20) NOT NULL,
`c_int2` int(11) NOT NULL,
`c_varchar2` varchar(20) NOT NULL,
`c_int1` int(11) DEFAULT NULL,
`sfsfsdfsd` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
KEY `indx_1` (`c_int1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
SHOW CREATE TABLE t2025032501;
结果:
CREATE TABLE `t2025032501` (
`id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
`c_int` int(11) NOT NULL,
`c_varchar` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
`c_int2` int(11) NOT NULL,
`c_varchar2` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
`c_int1` int(11) DEFAULT NULL,
`sfsfsdfsd` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
KEY `indx_1` (`c_int1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci