AWS Aurora DB执行RENAME COLUMN报错 如何无数据拷贝实现列重命名
Aurora DB列重命名问题解答
报错原因说明
你遇到的语法报错是因为RENAME COLUMN是MySQL 8.0版本才新增的语法,如果你使用的是Aurora MySQL 5.7及更早版本,原生不支持该语法。Aurora DB本身是支持列重命名操作的,只是需要适配对应数据库版本的语法。
大表免数据拷贝的重命名方案
无需走「新建列→拷贝数据→删除旧列」的重路线,直接使用MySQL低版本兼容的CHANGE COLUMN语法即可,只要你只修改字段名、保持其余字段属性完全和原定义一致,该操作仅修改元数据,属于秒级操作,不会触发表数据拷贝,适配任意大小的表。
操作步骤
- 先查询原字段的完整定义:
SHOW CREATE TABLE a;
从返回结果中提取字段b的完整属性,比如原字段定义为int(11) NOT NULL DEFAULT 0 COMMENT '业务字段'。
2. 执行重命名操作,建议加上在线DDL参数避免锁表影响业务:
ALTER TABLE a CHANGE COLUMN b c int(11) NOT NULL DEFAULT 0 COMMENT '业务字段' ALGORITHM=INPLACE, LOCK=NONE;
注意事项
CHANGE COLUMN后的字段定义必须和原属性完全一致,仅修改字段名即可,如果修改了字段类型、长度、默认值等属性,会触发表重建,消耗大量IO和时间。- 如果你使用的是Aurora MySQL 8.0及以上版本,原生支持你最初使用的
RENAME COLUMN语法,可以直接执行。 - 如果你使用的是Aurora PostgreSQL,原生支持
ALTER TABLE a RENAME COLUMN b TO c语法,无需适配。
内容的提问来源于stack exchange,提问作者Hirasawa Yui
相关产品推荐
相关产品推荐

