1.宝塔安装pgvector

1.先去github下载pgvectorpgvector/pgvector: Open-source vector similarity search for Postgres

2.把压缩包上传到系统文件的/temp下解压,重命名文件名为pgvector,之后命令操作

cd /tmp
cd pgvector
export PG_CONFIG=/www/server/pgsql/bin/pg_config
export PATH=$PATH:/www/server/pgsql/bin/
make
make install
psql -h localhost -p 5432 -U postgres
CREATE EXTENSION vector

版本:pgsql:16.1 pgvector:0.8

参考博客:宝塔安装pgvector - 时空云博客(这个博客命令少了一部分,不适用宝塔没有安装git的人)

验证
cd /tmp/pgvector
export PG_CONFIG=/www/server/pgsql/bin/pg_config
export PATH=$PATH:/www/server/pgsql/bin/
psql -h localhost -p 5432 -U postgres
SELECT * FROM pg_extension WHERE extname = 'vector';

2.向量数据库的创建

建表语句(这个就是spring ai Alibaba的)

CREATE TABLE IF NOT EXISTS public.vector_store (id UUID PRIMARY KEY,content TEXT NOT NULL,metadata JSONB,embedding VECTOR(1536)  -- 指定向量维度为 1536
);

要想利用navicat在宝塔上面创建成功必须要进行几步操作,第一你的数据库必须有建表权限,你自己创建的数据库是没有这个权限的,所以利用宝塔pg管理自带的数据库postgres在软件商店找到那个管理工具进去点击可以看到postgres的密码

之后要在客户端认证上面加入这么一段

host postgres postgres 0.0.0.0/0 md5   

pg_hba.conf 配置中,规则的字段顺序是 type database user address method。针对你的配置:

host postgres postgres 0.0.0.0/0 md5
  • 第一个 postgres数据库名,表示允许连接到名为 postgres 的数据库。
  • 第二个 postgres用户名,表示允许使用 postgres 用户进行连接。

详细说明

字段位置含义示例值说明
1连接类型 (type)host表示通过 TCP/IP 进行的非本地连接(区别于 local 表示 Unix 套接字连接)。
2数据库名 (database)postgres指定允许连接的数据库名称。可以是具体数据库名、all(所有数据库)、sameuser(与客户端相同的用户名)等。
3用户名 (user)postgres指定允许连接的用户名。可以是具体用户名、all(所有用户),或使用组名(以 + 开头)。
4IP 地址段 (address)0.0.0.0/0指定允许连接的客户端 IP 范围。0.0.0.0/0 表示所有 IPv4 地址,::/0 表示所有 IPv6 地址。
5认证方法 (method)md5指定认证方式(如 md5passwordtrustscram-sha-256 等)。

常见场景示例

  1. 允许所有用户连接所有数据库

    host all all 0.0.0.0/0 md5
    
  2. 仅允许 admin 用户连接 mydb 数据库

    host mydb admin 192.168.1.0/24 md5
    
  3. 允许本地用户通过 Unix 套接字连接所有数据库

    local all all trust
    

安全建议

  • 生产环境慎用 0.0.0.0/0:开放所有 IP 可能带来安全风险,建议使用更严格的 IP 范围(如 192.168.1.0/24)。
  • 使用强密码:配合 md5scram-sha-256 认证时,确保用户密码足够复杂。
  • 定期审计配置:定期检查 pg_hba.conf,移除不必要的开放规则。

3.PostgreSQL缺失hstore扩展

1.检查

这里依旧要在终端连接到数据库的超级用户操作

参考PostgreSQL 缺失hstore扩展|极客教程

SELECT * FROM pg_available_extensions WHERE name = 'hstore';

没有的话执行下面操作

/q  ---退出数据库连接明确系统版本
cat /etc/redhat-release----安装
sudo yum install -y postgresql16-contrib---注意查看连接有没有失效(https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/)
wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgresql16-contrib-16.1-1PGDG.rhel8.x86_64.rpmsudo yum localinstall postgresql16-contrib-16.0-1PGDG.rhel8.x86_64.rpm -y# 复制 hstore 控制文件和脚本到数据库实际扩展目录
sudo cp /usr/pgsql-16/share/extension/hstore.control /www/server/pgsql/share/extension/
sudo cp /usr/pgsql-16/share/extension/hstore--*.sql /www/server/pgsql/share/extension/# 复制 hstore 库文件到数据库 lib 目录
sudo cp /usr/pgsql-16/lib/hstore.so /www/server/pgsql/lib/# 登录数据库
psql -U postgres -h localhost -p 5432CREATE EXTENSION hstore;

根据您提供的错误信息,问题仍然出在 hstore.control 文件的语法格式上。PostgreSQL 对 .control 文件的结构有严格要求,特别是版本映射部分。



在这里插入图片描述

4.PostgreSQL 无法找到 uuid-ossp 扩展的控制文件

# 检查系统默认路径下是否有 uuid-ossp 控制文件
ls /usr/pgsql-16/share/extension/uuid-ossp.control
# 复制 uuid-ossp 控制文件和脚本到数据库路径
sudo cp /usr/pgsql-16/share/extension/uuid-ossp.control /www/server/pgsql/share/extension/
sudo cp /usr/pgsql-16/share/extension/uuid-ossp--*.sql /www/server/pgsql/share/extension/# 复制库文件
sudo cp /usr/pgsql-16/lib/uuid-ossp.so /www/server/pgsql/lib/
sudo systemctl restart postgresql-16.service
psql -U postgres -h localhost -p 5432
CREATE EXTENSION "uuid-ossp"

博主也是狠狠拿下了这个难题太不容易了
在这里插入图片描述
在这里插入图片描述

问题分析

我实操的一些错误,需要可以看看。

如果失败
ls -l /www/server/pgsql/share/extension/hstore.control  ---查看你现有文件或链接如果需要重新创建链接,可以使用 -f 选项覆盖现有文件
sudo ln -sf /usr/local/pgsql/contrib/hstore/hstore.control /www/server/pgsql/share/extension/
sudo ln -sf /usr/local/pgsql/contrib/hstore/hstore--1.7--1.8.sql /www/server/pgsql/share/extension/
sudo ln -sf /usr/local/pgsql/contrib/hstore/hstore--1.8.sql /www/server/pgsql/share/extension/确认扩展目录中的文件完整性
确保所有必要的 hstore 文件都已正确链接:
ls -l /www/server/pgsql/share/extension/hstore*错误的话删除
sudo unlink /www/server/pgsql/share/extension/hstore--1.0.sql
sudo unlink /www/server/pgsql/share/extension/hstore--1.7.sql
sudo unlink /www/server/pgsql/share/extension/hstore--unpackaged--1.0.sql
sudo unlink /www/server/pgsql/share/extension/hstore--unpackaged--1.7.sql
sudo unlink /www/server/pgsql/share/extension/hstore--1.8.sql缺少扩展版本
# 创建 hstore--1.8.sql 文件(复制自 1.7 版本)
sudo cp /usr/local/pgsql/contrib/hstore/hstore--1.7.sql \/usr/local/pgsql/contrib/hstore/hstore--1.8.sql# 更新 hstore.control 文件,添加对 1.8 版本的支持
sudo bash -c "cat >> /www/server/pgsql/share/extension/hstore.control" << EOF
1.8 = 'hstore--1.8.sql'
EOF(这里重复定义后面会报错,去对应的文件夹下/www/server/pgsql/share/extension/将hstore.control文件的重复定义删除了)

您的文件目前结构可能类似:

# hstore extension
comment = 'data type for storing sets of (key, value) pairs'
default_version = '1.8'
module_pathname = '$libdir/hstore'
relocatable = true
trusted = true# 版本映射(必须放在元数据之后,用空行分隔)
1.8 = 'hstore--1.8.sql'  # 第9行(错误行)

PostgreSQL 要求版本映射必须满足以下条件:

  1. 必须位于所有元数据定义(如 comment, default_version之后
  2. 必须与前面的内容用空行分隔
  3. 格式必须严格为 版本号 = '脚本文件名'

解决方案

1. 确保版本映射位于文件末尾

修改后的 hstore.control 应如下:

# hstore extension
comment = 'data type for storing sets of (key, value) pairs'
default_version = '1.8'
module_pathname = '$libdir/hstore'
relocatable = true
trusted = true# 版本映射(必须用空行与元数据分隔)
1.0 = 'hstore--1.0.sql'  # 如果需要支持旧版本
1.8 = 'hstore--1.8.sql'
2. 验证文件格式

使用以下命令检查文件格式是否正确:

# 查看文件内容(包含行号)
cat -n /www/server/pgsql/share/extension/hstore.control

确保:

  • 版本映射部分(1.8 = ...)前面有一个空行
  • 没有多余的空格或特殊字符
  • 等号两边有空格(或无空格,但格式统一)
3. 重新创建扩展

修改后,尝试重新创建扩展:

DROP EXTENSION IF EXISTS hstore;
CREATE EXTENSION hstore;

常见错误排查

  1. 隐藏字符问题

    # 使用 hexdump 查看文件的二进制表示,检查是否有隐藏字符
    hexdump -C /www/server/pgsql/share/extension/hstore.control | head -n 10
    

    确保没有非预期的字符(如 \r 或其他不可见字符)

  2. 文件编码问题

    # 检查文件编码
    file -i /www/server/pgsql/share/extension/hstore.control
    

    确保文件是 utf-8 编码

  3. 权限问题

    # 确保文件权限正确
    ls -l /www/server/pgsql/share/extension/hstore.control
    # 输出应类似:-rw-r--r-- 1 root root ...
    

如果问题仍然存在,请提供完整的 hstore.control 文件内容(包括行号),以便进一步诊断。

看起来 PostgreSQL 官方仓库的路径发生了变化,导致直接访问 RHEL 8 的仓库链接失败。以下是最新的解决方案,通过手动配置仓库文件来解决这个问题:

根据您的错误信息,系统中存在多个重复的 PostgreSQL 仓库配置,并且错误地引入了 RHEL 3 的仓库(这是一个非常古老的版本,与您的系统不兼容)。以下是解决步骤:

解决方案

1. 删除所有 PostgreSQL 仓库配置
sudo rm -f /etc/yum.repos.d/pgdg*.repo
2. 创建正确的 PostgreSQL 16 仓库配置
sudo vi /etc/yum.repos.d/pgdg.repo

添加以下内容(仅保留必要的仓库,避免重复):

[pgdg16]
name=PostgreSQL 16 for RHEL 8/CentOS 8 - x86_64
baseurl=https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-$basearch
enabled=1
gpgcheck=1
gpgkey=https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-16[pgdg-common]
name=PostgreSQL common RPMs for RHEL 8/CentOS 8 - x86_64
baseurl=https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-8-$basearch
enabled=1
gpgcheck=1
gpgkey=https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG
3. 清理缓存并验证仓库
# 清除旧缓存
sudo yum clean all
sudo rm -rf /var/cache/yum# 验证仓库列表(确保没有重复或错误的仓库)
sudo yum repolist

预期输出(应只包含 pgdg16pgdg-common,且无 RHEL 3 相关仓库):

repo id                repo name
alinux3-os             Alibaba Cloud Linux 3 - OS
alinux3-updates        Alibaba Cloud Linux 3 - Updates
...
pgdg16                 PostgreSQL 16 for RHEL 8/CentOS 8 - x86_64
pgdg-common            PostgreSQL common RPMs for RHEL 8/CentOS 8 - x86_64
4. 安装 PostgreSQL 16 扩展包
sudo yum install postgresql16-contrib
5. 验证 hstore 扩展文件
# 检查 hstore.so 是否存在
ls /usr/pgsql-16/lib/hstore.so# 检查控制文件是否存在
ls /usr/pgsql-16/share/extension/hstore.control
6. 修复符号链接
# 删除旧的符号链接
sudo rm -f /www/server/pgsql/share/extension/hstore*# 创建新的符号链接
sudo ln -s /usr/pgsql-16/share/extension/hstore.control /www/server/pgsql/share/extension/
sudo ln -s /usr/pgsql-16/share/extension/hstore--1.8.sql /www/server/pgsql/share/extension/
sudo ln -s /usr/pgsql-16/lib/hstore.so /www/server/pgsql/lib/
7. 重启 PostgreSQL 并验证扩展
sudo systemctl restart postgresql
psql -U postgres -c "CREATE EXTENSION hstore;"

关键说明

  • 重复仓库问题:之前的操作可能多次添加了相同的仓库,导致 yum 报错。
  • RHEL 3 仓库错误:系统错误地尝试访问 RHEL 3 的仓库,这是由于仓库配置中的版本变量(如 $releasever)被错误解析为 3
  • 手动指定 RHEL 8:通过在仓库配置中直接使用 rhel-8,避免系统自动识别版本导致的错误。

如果问题仍然存在,请提供 yum repolistls -l /usr/pgsql-16/lib/hstore.so 的输出结果,以便进一步诊断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913906.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913906.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913906.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568项目(八)--linux驱动开发之基础外设(上)

目录 一、引言 二、准备工作 ------>2.1、驱动加载/卸载命令 三、字符设备驱动开发 ------>3.1、驱动模块的加载和卸载 ------>3.2、外部模块编译模板 Makefile ------>3.3、cdev 四、LED驱动 ------>4.1、原理图 ------>4.2、驱动 五、设备树 -…

BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabySQli1-flag获取、解析

解题思路打开靶场&#xff0c;题目提示是sql注入输入数据&#xff0c;判断下闭合11123报错&#xff1a;Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 1 at line 1报错提示…

“AI 曼哈顿计划”:科技竞赛还是人类挑战?

美国国会下属的经济与安全审查委员会已将“推动建立并资助一项堪比曼哈顿计划的通用人工智能研发项目”列为其对国会的核心建议之一&#xff0c;明确显示出对AI竞赛战略意义的高度重视。与此同时&#xff0c;美国能源部在近几个月中多次公开将人工智能的突破比作“下一场曼哈顿…

音频信号的预加重:提升语音清晰度

一、预加重介绍预加重是一种信号处理技术&#xff0c;主要用于增强音频信号中的高频成分。由于人类语音的频谱特性&#xff0c;尤其是在辅音和音调的表达上&#xff0c;高频成分对于语音的清晰度至关重要。然而&#xff0c;在录音和传输过程中&#xff0c;这些高频成分往往会受…

WebSocket实战:实现实时聊天应用 - 双向通信技术详解

目录一、WebSocket&#xff1a;实时通信的"高速公路"1.1 HTTP的短板&#xff1a;永远的"单相思"1.2 WebSocket的优势&#xff1a;真正的"双向对话"二、30分钟搭建聊天服务器2.1 环境准备2.2 WebSocket配置类2.3 核心消息处理器三、前端实现&…

宏集案例 | 基于CODESYS的自动化控制系统,开放架构 × 高度集成 × 远程运维

​​案例概况客户&#xff1a;MACS Sterilisationsanlagen GmbH&#xff08;Ermafa Environmental Technologies GmbH 旗下&#xff09; 应用场景&#xff1a;医疗与感染性废弃物的无害化处理控制系统应用产品&#xff1a;宏集Berghof高性能控制器设备&#xff08;一&#xff0…

学习JNI 二

创建一个名为Learn1项目&#xff08;Android Studio&#xff09;。一、项目结构二、配置 build.gradlebuild.gradle.kts(:app)plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android) }android {namespace "com.demo.learn1&quo…

基于Spring Boot+Vue的DIY手工社预约管理系统(Echarts图形化、腾讯地图API)

2.10 视频课程管理功能实现2.11手工互动&#xff08;视频弹幕&#xff09;2.8预约设置管理功能实现&#x1f388;系统亮点&#xff1a;Echarts图形化、腾讯地图API&#xff1b;文档包含功能结构图、系统架构图、用例图、实体属性图、E-R图。一.系统开发工具与环境搭建1.系统设计…

leetcode 每日一题 1353. 最多可以参加的会议数目

更多技术访问 我的个人网站 &#xff08;免费服务器&#xff0c;没有80/443端口&#xff09; 1353. 最多可以参加的会议数目 给你一个数组 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示会议 i 开始于 startDayi &#xff0c;结束于 endDayi 。 …

AI+智慧园区 | 事件处置自动化——大模型重构园区治理逻辑

在智慧园区的建设浪潮中&#xff0c;事件管理一直是园区高效运营的关键环节。考拉悠然所推出的大模型 智慧园区解决方案&#xff0c;在事件智能闭环管理方面独树一帜&#xff0c;为园区的日常运营编织了一张严密、高效、智能的管理网络&#xff0c;实现了从事件感知到处置的全…

FFmpeg Windows安装

FFmpeg 用于音频文件转换 Builds - CODEX FFMPEG gyan.dev ffmpeg-release-full.7z 下载完成之后 zip解压 大概就是 ffmpeg/ └── bin/ └── ffmpeg.exe 配置环境变量 ffmpeg -version 有可能idea还是找不到命令 就把命令路径写在程序里 例如

【2025/07/10】GitHub 今日热门项目

GitHub 今日热门项目 &#x1f680; 每日精选优质开源项目 | 发现优质开源项目&#xff0c;跟上技术发展趋势 &#x1f4cb; 报告概览 &#x1f4ca; 统计项&#x1f4c8; 数值&#x1f4dd; 说明&#x1f4c5; 报告日期2025-07-10 (周四)GitHub Trending 每日快照&#x1f55…

JVM 基础 - JVM 内存结构

前言 本文主要对JVM 内存结构进行讲解&#xff0c;注意不要和Java内存模型混淆了。 运行时数据区 内存是非常重要的系统资源&#xff0c;是硬盘和 CPU 的中间仓库及桥梁&#xff0c;承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配…

【案例】二手车交易价格预测-472

二手车交易价格预测 数据来源数据特征探索构建模型参考数据来源 天池 https://tianchi.aliyun.com/competition/entrance/231784/information 数据特征探索 目标特征工程做好之后,能同时进行 lightgbm catboost 神经网络等模型,所以尽量都转换为数值类特征。 如果仅仅是使用…

【Spring】Java SPI机制及Spring Boot使用实例

目录 一、SPI是什么 1.1 SPI 和 API 有什么区别&#xff1f; 二、使用场景 三、使用介绍 四、Spring Boot实例运用 五、总结 一、SPI是什么 SPI全称Service Provider Interface&#xff0c;是Java提供的一套用来被第三方实现或者扩展的API&#xff0c;它可以用来启用框架…

多维度数据资产测绘技术在安全管控平台中的应用实践

一、数据资产治理困境&#xff1a;从 “黑箱” 到 “可见性” 的行业挑战在数字化转型加速的当下&#xff0c;企业数据资产呈现爆发式增长&#xff0c;而传统资产梳理手段因维度单一、时效性差&#xff0c;导致 “资产黑箱” 问题频发。某省级运营商曾在安全评估中发现&#xf…

搭建react18+项目过程中遇到的问题(vite)

问题1. 页面中使用import.meta.env获取环境变量有红色波浪线提示错误按提示给ts.config.ts文件中的compilerOptions增加了"module": “esnext” (es2020 | es2022 | system)这几个也不行 但是另一个问题出现了安装的第三方库引入报错了 按照提示我们将module改成了’…

Linux epoll简介与C++TCP服务器代码示例

Linux epoll 简介与示例 TCP 服务器 1. 为什么要用 epoll select/poll 每次调用都把全部文件描述符从用户态拷贝到内核态,随连接数增长而线性变慢;epoll 采用事件驱动+就绪队列的方式,内核只把“已就绪”的描述符返回给用户态,O(1) 规模扩展;支持 边沿触发 Edge-Triggere…

IPv4和IPv6双栈配置

根据IPv6的学习&#xff0c;完成以下一个简单的双栈配置案例&#xff0c;具体结构如下图所示。PC1的 IPv4&#xff1a;192.168.2.1/24 、IPv6&#xff1a;2001:db8:2::2/64&#xff0c;PC2的 IPv4&#xff1a;192.168.3.1/24 、IPv6&#xff1a;2001:db8:3::2/64总共需要两台PC…

Robyn高性能Web框架系列08:使用 Rust 扩展 Robyn

使用 Rust 扩展 RobynPyO3 Bridge示例&#xff1a;一个简单的Rust扩展1、安装必须的组件2、初始化Rust项目3、编写Rust代码4、在Robyn中使用Rust代码在“Robyn高性能Web框架系列07&#xff1a;多进程、性能调优”一节中&#xff0c;我们讲解了Robyn丰富的性能调优方式&#xff…