我正在尝试导入带有扩展名的转储,摘自 SQL:
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs';
导入(通过 Gcloud SQL UI)失败SET SET SET SET SET SET CREATE EXTENSION ERROR: must be owner of extension plpgsql
。
这是一个可以理解的错误(GCloud 服务用户没有权限),但它没有帮助。如果由 UI 触发并手动设置所有权,我无法控制恢复过程,Google Cloud SQL 不允许授予角色超级用户权限(这样做不是处理此问题的好方法)。
在这种情况下最好的行动方案是什么?
答案1
很久没有人回复,所以我将告诉我如何克服这个问题。
以 postgres 用户身份连接到您的实例,连接到 template1 DB 并安装所需的扩展(如果它们在支持的列表)。
从 Cloud SQL UI 中删除并重新创建数据库。也许手动操作也行,但我决定不测试。UI 会告诉您将使用 template1 创建新数据库。
- 修改您的转储并注释掉所有扩展创建。
- 通过 UI 导入并希望它能起作用。
就我而言,只有 plpgsql 和 hstore 扩展,所以没有问题。