【发布时间】:2021-10-08 13:55:17
【问题描述】:
我正在尝试将 terraform google 提供程序从 3.55 更新为 3.58 以添加大查询删除保护。
运行terraform plan 时,我收到# forces replacement 警告:
# google_bigquery_table.my_table must be replaced
...
+ deletion_protection = true
...
~ schema = jsonencode(
~ [ # forces replacement
~ {
~ fields = [
# (6 unchanged elements hidden)
{
description = "Location of the data schema."
name = "dataSchema"
type = "STRING"
},
~ {
~ type = "BOOLEAN" -> "BOOL"
# (2 unchanged elements hidden)
},
]
~ type = "RECORD" -> "STRUCT"
# (2 unchanged elements hidden)
} # forces replacement,
~ {
~ type = "RECORD" -> "STRUCT"
# (3 unchanged elements hidden)
} # forces replacement,
~ {
~ type = "RECORD" -> "STRUCT"
# (3 unchanged elements hidden)
} # forces replacement,
]
)
谁能帮助我理解 (a) 为什么在我没有更改架构的情况下强制替换此更新,以及 (b) 如何在不删除表中数据的情况下更新我的 google 提供程序。
任何帮助将不胜感激。
【问题讨论】:
-
您是否在配置中指定表架构?
-
@MattSchuchard 是的,我在
schema资源中的schema属性上定义了它们 -
你不能把架构放在 ignore_changes 下吗?
-
@NathanRuiz 谢谢我不知道ignore_changes 存在。这样做是否会为下一次更新解决问题?还是我会无限期地将架构保留在 ignore_changes 下?
-
它将忽略架构中所做的更改,因此只要它存在就不会在应用时导致任何更新,缺点是:如果您需要从头开始复制您的环境,您将得到任何设置在 terraform 上,可能无法反映实际数据。但除此之外,它工作得很好。更多信息terraform.io/docs/language/meta-arguments/lifecycle.html
标签: google-bigquery terraform terraform-provider-gcp