tidb 4.0.13
tidb字符集默认排序规则是严格区分大小写的,现在业务上数据要忽略大小写,有可以修改的全局参数来控制排序规则吗?
我查的文档说new_collations_enabled_on_first_bootstrap这个参数可以控制,但是必须要重建集群,在集群初始换的时候来控制,不知是否是这样?
假如我不想重建集群,有办法能修改tidb的排序规则不区分大小写吗?
tidb 4.0.13
tidb字符集默认排序规则是严格区分大小写的,现在业务上数据要忽略大小写,有可以修改的全局参数来控制排序规则吗?
我查的文档说new_collations_enabled_on_first_bootstrap这个参数可以控制,但是必须要重建集群,在集群初始换的时候来控制,不知是否是这样?
假如我不想重建集群,有办法能修改tidb的排序规则不区分大小写吗?
目前如果不想重新建集群,没有办法修改 TiDB 不区分大小,还是重建集群才能满足需求。
只需要这一个参数new_collations_enabled_on_first_bootstrap控制吗?
还需要其他参数吗?
我重建了集群,开启了new_collation_enabled,修改了排序规则为utf8mb4_general_ci,
但是当我创建一个表之后,表的编码规则依然是utf8mb4_bin,这是为什么?
mysql> SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME=‘new_collation_enabled’;
±---------------+
| VARIABLE_VALUE |
±---------------+
| True |
±---------------+
1 row in set (0.00 sec)
mysql> show global variables like ‘collation%’;
±---------------------±-------------------+
| Variable_name | Value |
±---------------------±-------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
±---------------------±-------------------+
CREATE DATABASE test_0624
/*!40100 DEFAULT CHARACTER SET utf8mb4 */
CREATE TABLE test20210624
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
name char(10),
PRIMARY KEY (id
)
) ENGINE=InnoDB
mysql> use test_0624
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>
mysql>
mysql> show table status like ‘test20210624’\G
*************************** 1. row ***************************
Name: test20210624
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 1
Avg_row_length: 12
Data_length: 12
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 2
Create_time: 2021-06-24 13:19:07
Update_time: NULL
Check_time: NULL
Collation: utf8mb4_bin
Checksum:
Create_options:
Comment:
1 row in set (0.02 sec)
需要在建库的时候显示的指定字符集和排序规则,没办法全局指定,这个我之前提过,但是最新版也还是这样
我也发现这个问题了,不知道是官方认为这样是对的,还是说是bug没修复
有解决方案吗?我现在也遇到这个问题,重建集群,但dm全量同步是依然是使用默认字符集,没有继承mysql的字符集
重新发一个新问题
重建集群,DM同步事先在tidb创建你需要的字符集的库表,然后通过DM同步数据,DM在同步的过程中如果发现库表存在会报错忽略,不影响数据的同步
你全量同步数据能继承mysql的字符集吗?我这没报错,但只有新建的表才会继承mysql的字符集,旧表还是tid默认的字符集
我这mysql是utf8,迁到tidb都换成utf8mb4了,所以,迁移之前在tidb中先创建库表为utf8mb4,所以不需要mysql原来的字符集以及编码规则了
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。