You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法连接PostGIS数据库:QGIS无法查看云PostgreSQL数据表求助

嘿,作为刚入坑PostgreSQL和PostGIS的新手,遇到连接QGIS后看不到数据表的问题真的太常见了!我帮你梳理几个最可能的排查方向,一步步来解决:

1. 先确认PostGIS扩展是否正确启用

不管是本地还是云端的PostgreSQL数据库,要让QGIS识别空间数据表,必须先给目标数据库安装PostGIS扩展——这是新手最容易踩的坑!
你可以在PgAdmin4里打开对应的数据库,启动SQL查询工具,执行以下命令:

CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS postgis_topology;

执行完后,用这条命令验证是否安装成功:

SELECT postgis_version();

如果是云端AWS的数据库,新建时默认不会自带PostGIS,一定要手动装!

2. 检查QGIS连接的配置细节

QGIS 2.18连接PostgreSQL时,有几个容易忽略的小细节:

  • 连接时务必选对目标数据库名称,别不小心连到了默认的postgres库或者其他无关库
  • 切换到「空间数据表」标签页前,记得点击右上角的刷新按钮——QGIS不会自动实时加载新表
  • 留意「仅显示空间数据表」的复选框:如果你的表是普通非空间SQL表,要把这个勾去掉才能看到;如果是空间表,得确保表中存在geometry类型的空间字段,不然勾上后也会被过滤掉

3. 数据表的权限是否到位

你用管理员身份登录PgAdmin4,但QGIS连接时用的账号未必有对应数据表的SELECT权限!哪怕是管理员账号,新建表后权限也可能没自动继承,更别说云端AWS的账号可能有默认权限限制。
可以在PgAdmin4里执行以下命令给QGIS连接账号授权:

-- 给现有表授权
GRANT SELECT ON ALL TABLES IN SCHEMA public TO 你的QGIS连接账号;
-- 给未来新建的表设置默认授权
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO 你的QGIS连接账号;

4. 版本兼容性问题

你本地是PostgreSQL 10,云端是9.6.5,QGIS 2.18.5对PostGIS版本的兼容性需要注意。如果云端PostGIS的版本过高,QGIS 2.18可能无法正常识别。
建议先检查云端PostGIS的版本(用之前的postgis_version()命令),如果确实存在版本不兼容,要么升级QGIS到3.x版本(对新PostGIS支持更好,稳定性也更强),要么确认云端PostGIS版本在QGIS 2.18的支持范围内。

5. 云端数据库的网络访问权限

AWS RDS的PostgreSQL默认只允许安全组内的IP访问,如果你本地IP不在安全组的入站规则里,哪怕QGIS显示连接成功,也拿不到数据。
你可以登录AWS控制台,找到对应的RDS实例,检查安全组的入站规则,把你的本地公网IP添加进去(测试时可以临时放开0.0.0.0/0,但测试完一定要改回去,避免安全风险)。另外,连接时要填对AWS RDS的端点地址和默认端口5432,别填错了!


内容的提问来源于stack exchange,提问作者Theo F

火山引擎 最新活动