重命名 AWS Aurora 数据库中的列

Rename a column in AWS Aurora DB

我喜欢:

ALTER TABLE a RENAME COLUMN b TO c

事情是这样的:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN b TO c' at line 1

我想知道,是否可以重命名 Aurora DB 中的列?我做了研究,但关于这些限制的文档似乎为零。如何在不使用 RENAME 的情况下重命名列? table 中有大量数据,所以我不想创建->复制数据->删除。

实际上,通过细读 Aurora DB documentation,我没有看到重命名列作为示例操作。但这是一种解决方法。您可以使用您想要的名称添加一个新列,使用旧列中的数据填充它,然后删除该旧列。

ALTER TABLE a ADD COLUMN (c INT), ALGORITHM = INSTANT;  -- or whatever type you want
UPDATE a SET c = b;                                     -- copy over all data from old to new
ALTER TABLE a DROP COLUMN b, ALGORITHM = INSTANT;       -- now drop the old column

我终于成功地重命名了它,使用这个奇怪的 CHANGE 语句。让我在这里留下查询,以防将来有人遇到同样的问题:

ALTER TABLE a CHANGE b c INT NOT NULL

如您所见,它并不完美,因为必须指定列类型,而不仅仅是名称。因此,请确保将 INT NOT NULL 替换为您自己的类型。如果您不在其中添加 NOT NULL,它可能会创建一个可为空的列,因此请当心。