BigQuery PATCH 前提条件检查失败

hzi*_*oun 8 python google-bigquery google-cloud-platform

我使用 BigQuery Python 客户端版本 google-cloud-bigquery==2.15.0,有时当我通过以下方式更新(修补)表时:

client.update_table(table, ["labels", "description"])

我收到以下错误

PreconditionFailed('PATCH 
https://bigquery.googleapis.com/bigquery/v2/projects/my-proj/datasets/my-ds/tables/my-table?prettyPrint=false
: Precondition check failed.')
Run Code Online (Sandbox Code Playgroud)

Github 上有一个与此相关的已关闭问题https://github.com/googleapis/google-cloud-python/issues/5588 。这个问题已经在 2018 年的 PR 中解决了。但我仍然收到错误。

任何想法?我应该升级到最新版本吗?

Shr*_*ike 0

我也遇到过类似的情况,突然之间,在bq_client.update_table(table, ["schema"])一切正常之前,我开始通过仅一个新列更新模式时出现 PRECONDITION_FAILED: 412 错误。我发现这个错误的原因是我通过DDL更新表:

table = self.bq_client.get_table(table_ref)
...
sql = f"ALTER TABLE `{table_name}` DROP COLUMN {field.name}"
self.execute_query(sql)
...
table = self.bq_client.update_table(table, ["schema"])
Run Code Online (Sandbox Code Playgroud)

为了解决该错误,我添加了重新获取表的架构:

table = self.bq_client.get_table(table_ref)
table = self.bq_client.update_table(table, ["schema"])
Run Code Online (Sandbox Code Playgroud)

之后一切开始正常