加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

TiDB增加表的主键报错的处理方法

(2020-07-13 21:21:14)
分类: Internet和计算机
问题:在TiDB中给表增加主键时,报错:
ALTER TABLE `yourtables` ADD PRIMARY KEY (`new_primary_key`);
结果有报错如下:
ERROR 8200 (HY000): Unsupported add primary key, alter-primary-key is false

[原因分析]
alter-primary-key
用于控制添加或者删除主键功能(在 3.0.6 及以后版本支持此配置项)。
默认值:false
默认情况下,不支持增删主键。将此变量被设置为 true 后,支持增删主键功能。不过对在此开关开启前已经存在的表,且主键是整型类型时,即使之后开启此开关也不支持对此列表删除主键。

[解决方案]
ansible部署方式修改:
cd tidb-ansible/
vi conf/tidb.yml
将 alter-primary-key: false 改为:alter-primary-key: true
注意:alter-primary-key: false 是默认值,该行是注释的,可以新增一行(注意开头要空2格,不可顶格):
alter-primary-key: true

然后执行:
ansible-playbook rolling_update.yml -t tidb 生效(会重启TiDB集群)

附:如果系统启用了SWAP,在执行上述ansible脚本时会报错中断,需要禁用SWAP或禁止ansible脚本对SWAP分区的检测:
vi roles/check_system_dynamic/tasks/main.yml,将以下行注释掉:
- name: Preflight check - Check swap
  fail:
    msg: "Swap is on, for best performance, turn swap off"
  when: ansible_swaptotal_mb != 0

即:
  #- name: Preflight check - Check swap
  fail:
    msg: "Swap is on, for best performance, turn swap off"
  when: ansible_swaptotal_mb != 0
然后重新执行:
ansible-playbook rolling_update.yml -t tidb

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有