问题:在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或禁止
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或禁止
