Azure PostgreSQL服务器迁移失败:hypopg扩展权限报错求助
Azure PostgreSQL迁移hypopg扩展报错解决思路
问题定位
迁移失败核心原因:恢复hypopg扩展时,执行账号无该扩展的所有者权限,导致pg_restore退出码1;虽表数据已迁移完成,但门户判定迁移失败。
解决步骤
确认迁移账号权限
迁移所用账号需具备超级用户权限,在目标库执行:SELECT rolsuper FROM pg_roles WHERE rolname = '你的迁移账号';若返回
false,执行授权命令:ALTER ROLE 你的迁移账号 WITH SUPERUSER;手动创建目标库的hypopg扩展
直接在目标库手动完成扩展创建,规避迁移工具自动处理的权限问题:-- 若源库指定了版本,替换为对应版本号 CREATE EXTENSION IF NOT EXISTS hypopg VERSION 'x.x.x';创建后验证:
SELECT extname, extowner FROM pg_extension WHERE extname = 'hypopg';调整迁移工具参数
若使用Azure DMS等工具,可在迁移任务设置中添加pg_restore自定义参数--no-extensions,跳过扩展恢复环节,仅迁移数据和结构,之后手动补全扩展。对齐扩展所有者(可选)
若源库中hypopg的所有者为特定账号,可在目标库修改扩展所有者匹配:ALTER EXTENSION hypopg OWNER TO 目标账号;验证迁移完整性
手动对比源库与目标库的表数据、索引、扩展状态,确认一致后,可忽略门户的失败提示,或重新发起仅针对扩展的迁移任务(若工具支持)
内容的提问来源于stack exchange,提问作者QuantumPhysGuy
相关产品推荐
相关产品推荐

