【发布时间】:2022-06-16 21:49:07
【问题描述】:
我有下面的代码。
terraform {
required_providers {
snowflake = {
source = "chanzuckerberg/snowflake"
version = "0.22.0"
}
}
}
provider "snowflake" {
alias = "sys_admin"
role = "SYSADMIN"
username = "tf-snow"
private_key_path = "..."
region = "ap-southeast-2"
account = "..."
}
resource "snowflake_warehouse" "star_warehouse" {
provider = snowflake.sys_admin
name = "STAR_WAREHOUSE"
warehouse_size = "XSmall"
auto_suspend = 60
}
resource "snowflake_database" "STAR_DB" {
provider = snowflake.sys_admin
name = "STAR_DB"
}
resource "snowflake_schema" "public" {
provider = snowflake.sys_admin
database = "STAR_DB"
name = "public"
data_retention_days = 1
}
resource "snowflake_table" "sales" {
provider = snowflake.sys_admin
database = "STAR_DB"
schema = "public"
name = "sales"
column {
name = "id"
type = "int"
}
}
我决定将“STAR_DB”重命名为小写“star_db”。
现在,无论我做什么,我都会不断收到此错误。
Error: 002043 (02000): SQL compilation error: Object does not exist, or operation cannot be performed.
with snowflake_schema.public
on snowflake.tf line 33, in resource "snowflake_schema" "public":
Error: 002043 (02000): SQL compilation error: Object does not exist, or operation cannot be performed.
with snowflake_table.sales
on snowflake.tf line 40, in resource "snowflake_table" "sales":
我还原了代码,删除了大部分代码,删除了底层资源,然后重新创建了它们,但仍然是同样的错误。
有人知道怎么回事吗?
注意:我使用的是 terraform cloud
【问题讨论】:
-
我要冒险了:我觉得它不能删除数据库,因为它不知道应该先删除表和模式。我不喜欢这个提供者的一点是,我没有看到任何属性在创建后被导出,这意味着您只能使用显式依赖项。换句话说,尝试在
snowflake_schema和snowflake_table中使用depends_on = [snowflake_database.STAR_DB]。 -
不幸的是,似乎没有帮助,即使我删除了文件本身也无济于事。我在其他文件中有一堆 AWS 配置,我必须手动将其全部删除并重新开始。这是一个非常糟糕的错误。
-
是的,我会在他们的 Github 存储库中为提供商提交问题。
-
刚弄好了,还是谢谢你的帮助
-
我将depends_on = [snowflake_schema.public] 放在桌面上,它消除了其中一个错误!奇怪的是,将depends_on = [snowflake_database.STAR_DB] 放在架构上并不能消除其他错误。好奇。
标签: terraform snowflake-cloud-data-platform