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 中解决了。但我仍然收到错误。
任何想法?我应该升级到最新版本吗?
我也遇到过类似的情况,突然之间,在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)
之后一切开始正常