使用 liquibase 的 bigquery 架构部署因 400 错误请求而失败

问题描述 投票:0回答:1

尝试使用 Liquibase 部署 bigquery 架构时出现以下错误。

SEVERE [liquibase.integration] [Simba][BigQueryJDBCDriver](100032) Error executing query job. Message: Syntax error: Missing whitespace between literal and alias at [1:35] [Failed SQL: (100032) CREATE TABLE projectId.databasename.DATABASECHANGELOG (ID STRING(255), AUTHOR STRING(255), FILENAME STRING(255), DATEEXECUTED datetime, ORDEREXECUTED INT, EXECTYPE STRING(10), MD5SUM STRING(35), DESCRIPTION STRING(255), COMMENTS STRING(255), TAG STRING(255), LIQUIBASE STRING(20), CONTEXTS STRING(255), LABELS STRING(255), DEPLOYMENT_ID STRING(10))]

我没有对databasechangelog表进行任何更改,或者databasechangeloglock表liquibase正在执行其内部命令。

在属性中我使用以下网址字符串:

url: jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=projectId;DefaultDataset=projectId.databasename;OAuthType=3;

并运行以下 liquibase 命令。我正在 kubernetes 集群中执行此操作,我已向服务帐户提供了所需的角色

liquibase update --changelog-file=/changelog/changeSetFile.sql --url=jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=projectId;DefaultDataset=projectId.databasename;OAuthType=3; --log-level=INFO

我也尝试过如下设置,但仍然不起作用:

默认数据集=数据库名称

google-bigquery liquibase
1个回答
0
投票

舒巴姆是正确的。目前,Liquibase Bigquery 扩展在运行查询时不会引用项目/架构/表名称。根据 Bigquery 文档,要使用不带引号的标识符,您必须遵循这些规则:

  1. 必须以字母或下划线 (_) 字符开头。
  2. 后续字符可以是字母、数字或下划线 (_)。

如果我是对的,项目 ID 是由 Bigquery 生成的,因此您需要重新创建它以删除与

_
不同的任何特殊字符,直到 liquibase 发布引用这些值的版本。

© www.soinside.com 2019 - 2024. All rights reserved.