本文介绍了如何转储Google Cloud SQL for PostgreSQL DB以导入回常规的PostgreSQL DB?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用pg_dump和pg_restore从Google Cloud SQL(PostgreSQL)实例导出我的数据,以便将其导入到常规Postgres数据库:
pg_dump -h sql_proxy -F t --no-owner --no-acl > backup.tar pg_restore backup.tar -c但是,当运行pg_restore时,我收到以下错误:
PG_RESTORE:[ARCHIVER(Db)]处理TOC时出错:PG_RESTORE: [存档器(数据库)]目录条目197中的错误;1259 17010表xxx Postgres PG_RESTORE:[ARCHIVER(Db)]无法执行查询:错误: 角色"postgres"不存在 命令是:将TABLE PUBLIC.xxx Owner改为Postgres; Pg_RESTORE:[存档器(数据库)]目录条目198中的错误;1259 17017表 XXY postgres PG_RESTORE:[ARCHIVER(Db)]无法执行查询: 错误:角色"postgres"不存在 命令是:将TABLE PUBLIC.xxy Owner更改为Postgres;...
我尝试了几种不同的旗帜,但都没有成功。我找到了很多关于如何反过来迁移(从PostgreSQL迁移到Google Cloud SQL for PostgreSQL)的文章,Google Cloud docs只介绍了如何将数据导出,然后再次导入到云SQL数据库中。
对于如何避免上述错误以及如何在尽可能少的更改情况下迁移数据库,我将不胜感激。
推荐答案您需要在要导入转储的实例中预先创建引用的角色。
有两种方法可以实现这一点:
- 使用PG_Dumpall而不是PG_DUMP或
- pg_ump pall--仅全局参数,然后恢复该转储(这将创建角色以及其他内容)
更多推荐
如何转储Google Cloud SQL for PostgreSQL DB以导入回常规的PostgreSQL DB?
发布评论