将更改部署到 azure 时,sqitch deploy 命令失败

Posted

技术标签:

【中文标题】将更改部署到 azure 时,sqitch deploy 命令失败【英文标题】:sqitch deploy command fails when deploying changes to azure 【发布时间】:2020-05-27 18:40:10 【问题描述】:

大家好,我正在尝试将部署命令应用于托管在 azure 上的数据库。然而,我得到了以下错误:

sqitch deploy db:pg://cmurcia%40dataplatform:*****@dataplatform.postgres.database.azure.com:5432/dataplatform_metadata_service
Adding registry tables to db:pg://cmurcia%40dataplatform:@dataplatform.postgres.database.azure.com:5432/dataplatform_metadata_service
psql:/usr/share/perl5/App/Sqitch/Engine/pg.sql:4: ERROR:  permission denied for database dataplatform_metadata_service
"/usr/bin/psql" unexpectedly returned exit value 3
I tested with psql and I can both log in and modify tables in the database that is accessed with the mentioned URI (db:pg://cmurcia%40dataplatform:*****@dataplatform.postgres.database.azure.com:5432/dataplatform_metadata_service).

我也试过

sqitch deploy -t postgresql://cmurcia%40dataplatform:Welcome0518%21@dataplatform.postgres.database.azure.com:5432/dataplatform_metadata_service
Adding registry tables to db:postgresql://cmurcia%40dataplatform:@dataplatform.postgres.database.azure.com:5432/dataplatform_metadata_service
psql:/usr/share/perl5/App/Sqitch/Engine/pg.sql:4: ERROR:  permission denied for database dataplatform_metadata_service
"/usr/bin/psql" unexpectedly returned exit value 

3

我想问一下你是否有任何关于如何解决这个问题的提示。谢谢!

仅供参考,我正在使用托管在 azure 上的 ubuntu linux VM 来运行我安装 sqitch 的命令,sqitch 在本地运行。

【问题讨论】:

【参考方案1】:

当 Sqitch 连接到数据库时,首先要做的就是创建注册表(如果它尚不存在)。通常这是一个名为sqtich 的模式。看看Postgres registry script。确保您有权创建架构。如果您不这样做,请让其他人创建它并授予您在其中创建对象以及您的项目架构的权限。

【讨论】:

它问我 tableopts 参数这是指什么? 这是 Sqitch 设置用于 PostgresXC 的 psql 变量。但是,如果您使用 Sqitch 创建注册表,它不应该要求它。如果您需要在不使用 Sqitch 的情况下手动创建它,则需要删除 :tableopts 并将 :registry 替换为 sqitch 或您希望用于注册表的任何名称。

以上是关于将更改部署到 azure 时,sqitch deploy 命令失败的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sqitch 部署雪花数据库?

使用 Sqitch Rework 命令更改表

使用 sqitch 生成更改表脚本

Sqitch 部署到雪花 DW 失败

用 sqitch 恢复特定的变化?

使用 sqitch 中的 mysql 查询验证表不存在