【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 6.5.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
想修改一下复合主键,结果修改不起
之前主键 字段MEDICAL_INSTITUT_CODE
,和REPORT_NUMBER
,现在想加一个字段都不得行,想加一个APPLY_NUMBER,这种有什么办法没得?
【资源配置】
【附件:截图/日志/监控】
没有办法,只能重建表。
数据有几百万。。。,为撒升级了这个不兼容哟,之前版本都可以。
那还好,数据量不大。建新表,rename替换表,新数据正常写入,然后将历史数据导入
主要是有好几个表。
你说的这个么?这个参数在6.5被废弃了。这样的话,应该就是你说的,不支持修改。
不支持修改整数类型的主键,这是由于当主键为整数类型时,TiDB 使用其作为数据组织的索引。
alter-primary-key
(已废弃)
- 用于控制添加或者删除主键功能。
- 默认值:false
- 默认情况下,不支持增删主键。将此变量被设置为 true 后,支持增删主键功能。不过对在此开关开启前已经存在的表,且主键是整型类型时,即使之后开启此开关也不支持对此列表删除主键。
注意
该配置项已被废弃,目前仅在 @@tidb_enable_clustered_index
取值为 INT_ONLY
时生效。如果需要增删主键,请在建表时使用 NONCLUSTERED
关键字代替。要了解关于 CLUSTERED
主键的详细信息,请参考聚簇索引。
1 个赞
如果只是为了唯一性,可以加唯一索引。
我之前全部都是用的这个CLUSTERED,现在想加一个都得把表重建,好麻烦,我看6.1都可以,升级到6.5发现现在改都不得行了,主要是现在表有几个,而且每个地方都得一个一个重建。
是的,我们也遇到这个问题了,确实有点麻烦。这就更要求建表规范了。或者可以使用NONCLUSTERED代替。
那也是重建表才能指定哇。这个太坑了。
只能说下次升级前看好升级记录。
几百万重建也用不了几秒钟
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。