首页 > 解决方案 > 创建扩展在 PostgresSQL 中不起作用

问题描述

我需要安装一个扩展PostGISPostgreSQL以便我可以使用地理数据库。

以下是我所做的:

(来自我的 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.

我错过了什么?如果您能指出我理解中的漏洞,那就太好了。谢谢!

标签: postgresql

解决方案


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 服务器

然后你需要创建城市数据库,如果它不存在,然后连接到它。然后你应该能够创建扩展


推荐阅读