【TiDB 使用环境】 Poc
【TiDB 版本】V7.5.6
【操作系统】Centos7
【部署方式】单机部署
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
数据库编码格式为GBK,排序规则为gbk_chinese_ci,执行sql报错:Unsupported modify charset from gbk to binary
语句为:alter table tx_m_dimension_field modify column c_order integer null
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
ALTER TABLE tx_m_dimension_field
MODIFY COLUMN c_order INTEGER NULL CHARACTER SET gbk;
这样试下
1064 - You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 77 near “CHARACTER SET gbk”
不行只能新加字段然后改名了
- 首先添加新列:
ALTER TABLE tx_m_dimension_field
ADD COLUMN c_order_new INTEGER NULL;
- 更新数据:
UPDATE tx_m_dimension_field
SET c_order_new = c_order;
- 删除原列并重命名新列:
ALTER TABLE tx_m_dimension_field DROP COLUMN c_order;
ALTER TABLE tx_m_dimension_field CHANGE COLUMN c_order_new c_order INTEGER NULL;
我修改编码为UTF-8后,重新建表,就可以执行alter table tx_m_dimension_field modify column c_order integer null 。
但是就涉及到另一个问题了,现在有一批数据插入不进去,因为主键是前缀+字符串,有些字符串末尾有空格,这时插入就会报主键重复。