寶塔下載pgsql適配spring ai

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…