Postgresql 创建扩展不在PostgresSQL中工作

Postgresql 创建扩展不在PostgresSQL中工作,postgresql,Postgresql,我需要为PostgreSQL安装一个扩展PostGIS,以便使用地理数据库 以下是我所做的: 我已经创建了一个名为city的数据库并与之连接 我遵循并键入了以下命令,我认为这些命令用于安装postgis (来自我的shell历史…) 然后,我尝试在数据库city中创建扩展,但出现以下错误: postgres@yuqiong-G7-7588:~$ psql psql (11.1 (Ubuntu 11.1-1.pgdg16.04+1), server 9.5.14) Type "help" fo

我需要为
PostgreSQL
安装一个扩展
PostGIS
,以便使用地理数据库

以下是我所做的:

  • 我已经创建了一个名为
    city
    的数据库并与之连接
  • 我遵循并键入了以下命令,我认为这些命令用于安装
    postgis
(来自我的shell历史…)

然后,我尝试在数据库
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服务器


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

可能是版本不匹配?“
…安装postgresql-10-postgis-2.4…
”、“
…服务器9.5.14…
”和“
…文件”/usr/share/postgresql/9.5/extension/postgis.control”…
”--10 vs 9.5…@stickybit谢谢,这也是我考虑的。我实际上搜索了如何将我的服务器升级到11,但没有找到它。然后我安装了postgresql 11,但这不会自动更新城市数据库的服务器。您可能还想尝试降级PostGIS。您忘了提供操作系统,但从
apt
判断,我假设是debian衍生产品。从shell中运行
pglsclusters
,查看安装了哪些Postgres db群集。@ErwinBrandstetter谢谢,这非常有效。谢谢!您知道如何检查哪些服务器正在运行并连接到特定服务器吗?目前我只需键入
psql
,它似乎可以自动连接到9.5.14服务器。请尝试psql-p/var/run/postgresql/.s.PGSQL.5433非常感谢。我看了剪辑。现在开始工作了!太好了!:)当你有几个postgres在运行,并且其中有不同的数据库时,这可能会让人困惑。我认为最简单的修复方法是卸载所有这些软件,然后只安装您想要的版本。那么您就不必再指定端口了。默认端口是5432。现在,我担心如果我做任何事情,工具链会以某种方式再次断裂,这个5433端口现在正在为我的目的工作,尽管肯定会浪费大量磁盘空间。将来如果我需要再次处理SQL数据库,我会记住你的建议:)谢谢!
psql -p 5433