BigQuery删除列后无法添加新列的原因及7天后能否正常添加咨询
BigQuery 删除列后添加新列触发异常的问题解答
问题场景
- 成功执行删除列命令:
ALTER TABLE User DROP COLUMN name - 已知该列通过时间旅行保留7天,但后续执行添加完全不同列名的命令时失败:
ALTER TABLE User ADD COLUMN first_name STRING - 报错信息:
该错误与重复执行删除Column name was recently deleted in the table User. Deleted column name is reserved for up to the time travel duration, use a different column name instead.name列(即使带IF EXISTS)的错误一致:ALTER TABLE User DROP IF EXISTS COLUMN name
疑问解答
为何会出现此问题?
这是BigQuery的列名保留机制导致的:当删除列后,BigQuery会在默认7天的时间旅行保留期内,将被删除的列名标记为"保留状态"。此时BigQuery的DDL语法校验会严格扫描所有ALTER语句,只要语句中出现了被保留的列名字符串(哪怕是作为新列名的子串,比如你要添加的first_name包含name),就会触发报错。这个机制是为了避免在时间旅行恢复历史数据时出现列名混淆,保证表结构的历史一致性。
7天后能否正常添加新列?
是的,7天后时间旅行保留期结束,被删除的列名会从保留列表中移除,此时你可以正常添加任何列名,包括first_name甚至原来的name列,不会再触发该错误。
内容的提问来源于stack exchange,提问作者Stan
相关产品推荐
相关产品推荐

