Mac OSX下Homebrew安装的PostgreSQL 10.2中SPI扩展无法创建问题求助
解决Homebrew安装的PostgreSQL 10.2中SPI相关扩展缺失的问题
嘿,我来帮你捋清楚这个问题!你遇到的报错本质是根本不存在一个叫spi的单独扩展——SPI(Server Programming Interface)是PostgreSQL提供的一组服务器编程接口,它支撑了很多具体的contrib扩展,但本身并不是一个可以用CREATE EXTENSION spi;直接安装的扩展包。下面是具体的解决步骤:
1. 先明确你实际需要的SPI相关扩展
首先打开PostgreSQL客户端,执行这条命令查看所有可用的扩展:
SELECT * FROM pg_available_extensions;
你会看到一堆扩展,比如plpgsql(默认已启用,是最基础的SPI应用)、dblink(跨数据库连接)、pg_stat_statements(SQL统计)、pgcrypto(加密功能)等,这些都是依赖SPI接口实现的扩展。找到你真正需要的那个扩展名称,再进行安装。
2. 确保Homebrew安装的PostgreSQL包含contrib扩展
Homebrew的PostgreSQL包默认已经包含了大部分contrib扩展,但偶尔可能因为安装异常导致缺失。可以按以下步骤修复:
- 先停止PostgreSQL服务:
brew services stop postgresql@10 - 重新安装PostgreSQL 10.2(会自动带上contrib扩展):
brew reinstall postgresql@10 - 重启服务:
brew services start postgresql@10
之后再去/usr/local/share/postgresql/extension/目录,应该就能看到你需要的扩展对应的.control文件了。
3. 手动编译单个contrib扩展(如果以上方法无效)
如果某个特定的SPI相关扩展还是缺失,你可以手动从源码编译安装:
- 下载PostgreSQL 10.2的源码包(去PostgreSQL官方版本归档页面找对应版本的压缩包,解压到本地)
- 进入源码的
contrib目录,找到你需要的扩展文件夹(比如dblink) - 执行编译命令(注意替换
pg_config的路径为你Homebrew安装的PostgreSQL 10的路径):make PG_CONFIG=/usr/local/opt/postgresql@10/bin/pg_config - 安装编译好的扩展:
make install - 回到PostgreSQL客户端,执行创建扩展的命令(以
dblink为例):CREATE EXTENSION dblink;
内容的提问来源于stack exchange,提问作者Lasf
相关产品推荐
相关产品推荐

