postgresql - 创建扩展在 PostgresSQL 中不起作用
问题描述
我需要安装一个扩展PostGIS
,PostgreSQL
以便我可以使用地理数据库。
以下是我所做的:
- 我创建了一个名为
city
并连接到它的数据库。 - 我已遵循本指南,并输入了我认为用于安装的以下命令
postgis
(来自我的 shell 历史......)
sudo apt install postgresql-10-postgis-2.4
sudo apt install postgresql-10-postgis-scripts
sudo apt install postgresql-10-pgrouting
sudo apt install postgis
然后我尝试在数据库中创建扩展city
,但出现以下错误:
postgres@yuqiong-G7-7588:~$ psql
psql (11.1 (Ubuntu 11.1-1.pgdg16.04+1), server 9.5.14)
Type "help" for help.
postgres=# \c city
psql (11.1 (Ubuntu 11.1-1.pgdg16.04+1), server 9.5.14)
You are now connected to database "city" as user "postgres".
city=# CREATE EXTENSION postgis;
ERROR: could not open extension control file "/usr/share/postgresql/9.5/extension/postgis.control": No such file or directory
结果,我怀疑postgis
扩展没有成功安装,因为我在尝试检查其版本时也遇到了这个错误:
city=# select postgis_version();
ERROR: function postgis_version() does not exist
LINE 1: select postgis_version();
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
我错过了什么?如果您能指出我理解中的漏洞,那就太好了。谢谢!
解决方案
psql(11.1(Ubuntu 11.1-1.pgdg16.04+1),服务器 9.5.14)
您连接到错误的服务器,如果您有多个不同的 postgres 服务器正在运行,您可以尝试连接到另一个端口,例如 5433 或 5434
看起来您至少安装了三个版本的 postgresql:9.5.14、10.* 和 11.1,您安装了版本 10 的 postgis,这意味着您需要连接到 postgresql 版本 10 服务器才能创建扩展。
尝试运行:
psql -p 5433
看看是否连接到正确的 postgresql 服务器
然后你需要创建城市数据库,如果它不存在,然后连接到它。然后你应该能够创建扩展
推荐阅读
- node.js - NextJS - 生产中打开的文件过多错误
- c# - 为什么 char.GetNumericValue() 给出错误的结果?
- r - 如何计算日期之间的差异,日期在 R 包 dplyr 的 1 列中?
- regex - Elasticsearch 通配符、正则表达式、match_phrase、前缀查询返回错误结果
- flutter - 无法在颤动中正确显示列表
- java - H2 找不到适合 jdbc:h2:mem 的驱动程序:
- dax - 根据计算和条件将最大类别作为额外列或 DAX 度量返回
- api - 如何处理来自 API 的消息 - 颤振
- php - 关于以不同方式在moodle中以新的方式显示类别和子类别有什么想法吗?
- excel - 如何在 MsExcel 2019 中从连字符(-)更改为斜杠(/)?