尝试使用 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
我也尝试过如下设置,但仍然不起作用:
默认数据集=数据库名称
舒巴姆是正确的。目前,Liquibase Bigquery 扩展在运行查询时不会引用项目/架构/表名称。根据 Bigquery 文档,要使用不带引号的标识符,您必须遵循这些规则:
如果我是对的,项目 ID 是由 Bigquery 生成的,因此您需要重新创建它以删除与
_
不同的任何特殊字符,直到 liquibase 发布引用这些值的版本。