[FAQ] 如何添加主键 Unsupported add primary key, alter-primary-key is false

[问题澄清]

在添加主键时遇到报错 Unsupported add primary key, alter-primary-key is false, 举例:

MySQL [ryl]> alter table test add primary key(b);

ERROR 8200 (HY000): Unsupported add primary key, alter-primary-key is false

[原因分析]

alter-primary-key

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

[解决方案]

  • ansible 部署方式修改 tidb-ansible/conf/tidb.yml;并通过 ansible-playbook rolling_update.yml -t tidb 生效

  • tiup 部署方式

    1. 通过 tiup cluster edit-config cluster-name 修改参数默认值,举例

      [tidb@node5169 ~]$ tiup cluster edit-config tidb-ryl2 image

    2. 按照提示执行reload,注意只需要执行 tidb reload 即可 ,使用 -R 参数 tiup cluster reload cluster-name -R tidb , 举例:

      [tidb@node5169 ~]$ tiup cluster reload tidb-ryl2 -R tidb

[参考案例]