ERROR: Could not open extension control file "D:/PGSQL/share/extension/postgis.control": No such file or directory.extension "postgis" is not available 错误: extension "postgis" is not available SQL 状态: 0A000 详细: Could not open extension control file "D:/PGSQL/share/extension/postgis.control": No such file or directory. 提示: The extension must first be installed on the system where PostgreSQL is running.
时间: 2024-02-20 16:56:06 浏览: 461
这个错误提示表明 PostGIS 扩展文件没有正确安装到 PostgreSQL 数据库中。你需要检查以下步骤:
1. 确认在安装 PostGIS 时是否出现任何错误或警告信息。如果有,请检查并修复这些问题。
2. 确认 PostGIS 扩展文件已经正确安装。你可以在 PostgreSQL 安装目录下的 `share/extension` 目录中查找 `postgis.control` 文件。如果找不到该文件,可能是安装过程中出现了问题,你需要重新安装 PostGIS 扩展。
3. 如果确认 PostGIS 扩展已经正确安装,但仍然无法使用,你可以尝试手动加载该扩展。例如,如果 PostGIS 扩展文件位于 `D:/PGSQL/share/extension` 目录下,你可以执行以下命令加载该扩展:
```
CREATE EXTENSION postgis FROM unpackaged;
```
如果该命令能够成功执行,说明 PostGIS 扩展已经正确安装,但可能存在一些其他问题导致 PostgreSQL 无法自动加载该扩展。你可以尝试重新启动 PostgreSQL 数据库或者检查 PostgreSQL 日志文件以获取更多信息。
相关问题
Could not open extension control file "/home/pgsql/share/extension/pg_trgm.control": 没有那个文件或目录
### 关于 PostgreSQL `pg_trgm.control` 文件缺失的解决方案
当遇到 `pg_trgm.control` 文件缺失错误时,通常是因为扩展文件未被正确安装或路径配置不正确。以下是针对此问题的具体分析和解决方法:
#### 1. 确认 PostgreSQL 安装包是否完整
确保 PostgreSQL 的安装过程中包含了所有的贡献模块(contrib modules)。如果通过源码编译安装,则需要确认在构建阶段已启用这些模块。可以通过以下命令验证是否存在 `pg_trgm` 控制文件:
```bash
find /usr/share/postgresql/ -name "pg_trgm.control"
```
如果没有找到该文件,可能需要重新安装 PostgreSQL 或者单独安装 contrib 模块。
对于基于 RPM 的系统(如 CentOS),可以尝试安装额外的软件包:
```bash
yum install postgresql-contrib
```
对于 Debian 及其衍生版本(如 Ubuntu),执行以下命令:
```bash
apt-get install postgresql-contrib
```
#### 2. 创建扩展前检查控制文件的存在性
在创建扩展之前,需手动确认 `pg_trgm.control` 是否存在于指定路径下。默认情况下,它位于 `$SHAREDIR/extension/pg_trgm.control` 路径中[^2]。例如,在大多数 Linux 发行版上,路径可能是 `/usr/share/postgresql/<version>/extension/pg_trgm.control`。
如果发现文件确实不存在,应考虑修复 PostgreSQL 安装或者下载对应的扩展文件并放置到正确的目录中。
#### 3. 使用超级用户权限运行 SQL 命令
即使存在上述问题,也可以尝试以超级用户身份进入数据库实例,并再次发出创建扩展的指令:
```sql
CREATE EXTENSION IF NOT EXISTS pg_trgm;
```
注意:只有具有管理员权限的角色才能成功加载新扩展程序。
#### 4. 修改 `pg_hba.conf` 权限设置 (如有必要)
虽然这一步骤并非直接解决问题的关键部分,但如果涉及远程访问或其他复杂场景下的部署环境调整,则仍有必要回顾一下 `pg_hba.conf` 设置是否合理。例如,允许本地连接使用信任模式可简化调试过程:
```
local all postgres trust
host all all 127.0.0.1/32 md5
```
完成修改后记得重启服务使更改生效[^3]:
```bash
sudo systemctl restart postgresql
```
综上所述,处理 `pg_trgm.control` 缺失的情况主要围绕以下几个方面展开——核查基础依赖关系、定位实际资源位置以及适当放宽安全策略以便进一步排查根本原因。
could not open extension control file "/opt/software/pgsql/postgresql/share/extension/postgres_fdw.control": 没有那个文件或目录
根据您提供的错误信息,出现了"could not open extension control file "/opt/software/pgsql/postgresql/share/extension/postgres_fdw.control": 没有那个文件或目录"的错误。
这个错误表示在尝试打开名为 "postgres_fdw.control" 的扩展控制文件时,文件不存在或路径不正确。
要解决这个问题,您可以采取以下步骤:
1. 确保您指定的路径 "/opt/software/pgsql/postgresql/share/extension" 是正确的,并且该路径下确实存在 "postgres_fdw.control" 文件。您可以使用命令行或文件管理器进行确认。
2. 如果文件确实不存在,请检查您的 PostgreSQL 安装是否完整,并且已经正确地设置了扩展模块。确保您的 PostgreSQL 版本与扩展模块的版本兼容。
3. 如果文件存在于其他位置,请将正确的路径更新到相关配置文件中。例如,如果您使用了 PostgreSQL 的扩展模块机制,可以尝试在 "postgresql.conf" 或 "pg_hba.conf" 文件中查找并更新相关路径。
4. 在确认路径和文件存在后,重新启动 PostgreSQL 服务器以使更改生效。
请注意,根据您的具体环境和配置,可能还有其他原因导致这个错误。如果问题仍然存在或需要更多帮助,请提供更多关于您的 PostgreSQL 版本、安装路径和相关配置的详细信息。
阅读全文
相关推荐

















