pg_restore导入错误的解决思路
创作时间:
作者:
@小白创作中心
pg_restore导入错误的解决思路
引用
CSDN
1.
https://blog.csdn.net/qq_40033445/article/details/140521717
背景
在使用PostgreSQL数据库进行部署时,通过pg_dump
导出数据后,使用pg_restore
导入时遇到了错误,导致很多表未能成功导入。部分错误截图如下:
排查问题
由于开发中使用了PostgreSQL插件PostGIS中的地理类型,因此使用SQL导出会遇到很多问题。于是采用pg_dump
进行导出,导出命令如下:
pg_dump -h localhost -p 15431 -U postgres -F c -b -v -d test1 -x -O -f D:\databases\test1.dump
1.本地试验(没有带PostGIS插件)
使用不带PostGIS插件的镜像进行测试,使用Docker环境:
docker run --name some-postgres -e POSTGRES_PASSWORD=dev@local -v E:\docker-postgis:/var/lib/postgresql/data -p 15432:5432 -d postgres:12.0-alpine
首先创建数据库,然后创建用户,之后给用户授予此新建数据库的权限,截图如下:
下图可知此镜像没有PostGIS插件
导入命令:
pg_restore -h localhost -p 5432 -U test -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump
报错:
之后给用户授予superuser权限:
ALTER USER test WITH SUPERUSER;
再继续导入,发现报错减少。
2.带PostGIS插件的镜像试验
同样创建用户,创建数据库,给用户授予操作数据库所有的权限,报错如下:
之后修改用户为superuser:
alter user test with superuser;
导入:
pg_restore -h localhost -p 5432 -U test -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump
导入成功
报的95个错误是因为新的数据库,有些索引不存在
查询可知PostGIS插件存在
总结
pg_restore
导入成功,需要满足两个条件:一是安装的PostgreSQL需要包含PostGIS插件,二是创建的用户需要具有superuser权限。
部分查看和创建语句
# 没有PostGIS插件的镜像
docker run --name some-postgres -e POSTGRES_PASSWORD=dev@local -v E:\docker-postgis:/var/lib/postgresql/data -p 15432:5432 -d postgres:12.0-alpine
# 登录数据库
psql -U postgres -h localhost -p 5432
# 创建数据库
create database test;
# 创建用户
CREATE USER test WITH PASSWORD 'dev@local';
# 给用户授予数据库权限
GRANT ALL PRIVILEGES ON DATABASE dbname TO user;
# 给用户授予superuser
ALTER USER your_username WITH SUPERUSER;
# 查看用户
\du
# 切换用户
\c mydatabase myuser
# 列出所有数据库
\l
# 查询PostGIS版本
select postgis_version();
# 查询PostgreSQL版本
select version();
# 查看PostgreSQL data目录
SHOW data_directory;
# 导入数据库
pg_restore -h localhost -p 5432 -U test -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump
# 有PostGIS的镜像
docker run -d --name fct-postgis-12-3.0 -p 54321:5432 -e POSTGRES_PASSWORD=dev@local -v E:\docker-postgis2:/data geographica/postgis:latest
热门推荐
孕妇开车时该不该系汽车安全带
十首诗词说洞房,情浓意浓尽在不言中!
超级个体时代,更要学会组队
电动木马上旋转木棒如何使用-了解使用技巧与注意事项
剧作课丨五个方法助你完善剧本大纲
什么是脚本?它的定义与作用是什么?
2025届中考英语作文高分技巧与范文
前端如何添加表情
魔芋丝热量:营养分析与适量摄入的艺术
AMD AM5主板最新动态:从X870E到A620的最优选择指南
如何让AI绘画机甲
曼城如何打造攻防平衡体系实现全面压制对手
AI写小说:技术原理、核心优势与应用场景
桂花适合放办公室吗?桂花在办公室养护有哪些注意事项?
合格性考试影响高考吗不及格怎么办?合格考不过能上大学吗?
如何快速到达两地之间的目的地?到达后如何适应当地环境?
在Office软件PPT和Word中制作乐谱的方法
理赔评估标准是什么?一文详解理赔评估要点
惠州市智能网联汽车产业现状创新模式及发展路径
无人机飞行控制系统技术,四旋翼无人机控制系统建模技术详解
无线耳机技术发展与趋势分析
同治中兴的历史意义与具体表现
全港首项研究揭示父亲作为特殊需要子女照顾者的负面情绪与行为
局部解剖学——胸部(概述)
创可贴选购与使用全攻略
公安题材剧还能如何升维?《驻站》的答案是……
入职要交钱?请果断拒绝!
华图资料分析怎么提高正确率?
9个存钱实操方法,无痛存款,2025年慢慢变有钱!
《无感染区》:在现实世界地图中守卫末日家园