소스 검색

Merge pull request #16606 from Rain6435/fix/azure-postgresql-pgvector-permissions

fix: resolve Azure PostgreSQL pgvector extension permission issue
Tim Jaeryang Baek 1 개월 전
부모
커밋
0b59aa940e
1개의 변경된 파일26개의 추가작업 그리고 2개의 파일을 삭제
  1. 26 2
      backend/open_webui/retrieval/vector/dbs/pgvector.py

+ 26 - 2
backend/open_webui/retrieval/vector/dbs/pgvector.py

@@ -111,11 +111,35 @@ class PgvectorClient(VectorDBBase):
 
         try:
             # Ensure the pgvector extension is available
-            self.session.execute(text("CREATE EXTENSION IF NOT EXISTS vector;"))
+            # Use a conditional check to avoid permission issues on Azure PostgreSQL
+            self.session.execute(
+                text(
+                    """
+                DO $$
+                BEGIN
+                   IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN
+                      CREATE EXTENSION IF NOT EXISTS vector;
+                   END IF;
+                END $$;
+            """
+                )
+            )
 
             if PGVECTOR_PGCRYPTO:
                 # Ensure the pgcrypto extension is available for encryption
-                self.session.execute(text("CREATE EXTENSION IF NOT EXISTS pgcrypto;"))
+                # Use a conditional check to avoid permission issues on Azure PostgreSQL
+                self.session.execute(
+                    text(
+                        """
+                    DO $$
+                    BEGIN
+                       IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'pgcrypto') THEN
+                          CREATE EXTENSION IF NOT EXISTS pgcrypto;
+                       END IF;
+                    END $$;
+                """
+                    )
+                )
 
                 if not PGVECTOR_PGCRYPTO_KEY:
                     raise ValueError(