【问题标题】:disable trigger on table on GCP在 GCP 上禁用表上的触发器
【发布时间】:2022-01-11 18:34:16
【问题描述】:

我正在进行数据库迁移,我需要禁用表上的外键约束才能和平迁移。

来自:How do I temporarily disable triggers in PostgreSQL?

我收集到我需要超级用户权限才能运行:

SET session_replication_role = replica;

SET session_replication_role = DEFAULT;

但是;在谷歌云平台上,不可能获得文档中详述的这些权限:

postgres 用户是 cloudsqlsuperuser 角色的一部分,具有以下属性(权限):CREATEROLE、CREATEDB 和 LOGIN。它没有 SUPERUSER 或 REPLICATION 属性

对于这个 StackOverflow 问题:upgrade user to superuser in postgres google cloud

我还尝试通过以下方式禁用触发器:

alter table orders.orders disable trigger all;

但是;为此,在我看来,我还需要 su 权利: ERROR: permission denied: "RI_ConstraintTrigger_a_25017" is a system trigger

那么,解决方案是什么,我什至可以禁用触发器 // 这个特定表的外键约束吗?

【问题讨论】:

    标签: postgresql google-cloud-platform triggers


    【解决方案1】:

    就像您从documentation 中读到的一样,这些命令需要superuser 权限,CloudSQL 中的用户尚无法使用这些权限。

    由于 Cloud SQL for PostgreSQL 是一项托管服务,它会限制对某些需要高级权限的系统过程和表的访问。

    实际上有一个开放的feature request 专注于这个功能。根据可用信息,它似乎还没有 ETA。无论如何,似乎有些复制服务不需要superuser,正如thread 所说。否则,GCP 还提供Data Migration Service,根据文档,它支持为 PostgreSQL 实例迁移外键约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多