Database Instellen
Capyshop vereist PostgreSQL 17+ met de pgvector-extensie geïnstalleerd.
Vereisten
- PostgreSQL 17+ server met pgvector geïnstalleerd
- Toegang tot de
postgres-supergebruiker (of equivalent) voor de initiële configuratie
1. Database en Gebruiker Aanmaken
Maak verbinding met je PostgreSQL-server als supergebruiker (bijv. postgres) en voer uit:
CREATE DATABASE your_database;
CREATE USER your_user WITH PASSWORD 'your_secure_password';2. Databaserechten Configureren
Maak verbinding met de zojuist aangemaakte database en ken de vereiste rechten toe:
-- Verbind met de database
\c your_database
-- Ken rechten toe aan de gebruiker
GRANT ALL PRIVILEGES ON DATABASE your_database TO your_user;
GRANT ALL ON SCHEMA public TO your_user;
-- Maak de pgvector-extensie aan (vereist supergebruiker)
CREATE EXTENSION IF NOT EXISTS vector;De vector-extensie moet aangemaakt worden door een supergebruiker. Eenmaal aangemaakt kan de applicatiegebruiker deze gebruiken zonder supergebruikersrechten.
3. Verbindings-URL Instellen
Stel de DATABASE_URL-omgevingsvariabele in met je verbindingsgegevens:
DATABASE_URL=postgresql://your_user:your_secure_password@localhost:5432/your_databaseDocker Compose Voorbeeld
Als je de aangepaste PostgreSQL-image met pgvector gebruikt, kun je de configuratie automatiseren met een init-script.
Maak init-db.sql aan:
GRANT ALL PRIVILEGES ON DATABASE your_database TO your_user;
GRANT ALL ON SCHEMA public TO your_user;
CREATE EXTENSION IF NOT EXISTS vector;Koppel het in je docker-compose.yml:
postgres:
image: your-pgvector-image:latest
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres_password
- POSTGRES_DB=your_database
volumes:
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
- postgres_data:/var/lib/postgresql/dataMaak vervolgens de applicatiegebruiker handmatig aan of via een ander init-script:
-- In een tweede init-script (bijv. 00-create-user.sql, wordt uitgevoerd vóór init-db.sql)
CREATE USER your_user WITH PASSWORD 'your_secure_password';Opmerking: Scripts in
/docker-entrypoint-initdb.d/worden alleen uitgevoerd wanneer de PostgreSQL-datamap leeg is (eerste keer opstarten). Als de database al bestaat, voer de SQL-commando's handmatig uit.
Probleemoplossing
| Fout | Oorzaak | Oplossing |
|---|---|---|
permission denied for schema public | Gebruiker mist schemarechten | GRANT ALL ON SCHEMA public TO your_user; |
permission denied to create extension "vector" | Extensie moet aangemaakt worden door supergebruiker | Voer CREATE EXTENSION IF NOT EXISTS vector; uit als supergebruiker |
type "vector" does not exist | pgvector-extensie niet geïnstalleerd of aangemaakt | Installeer pgvector in PostgreSQL en voer CREATE EXTENSION IF NOT EXISTS vector; uit |
P3009 - failed migrations | Een eerdere migratie is mislukt en heeft een vervuilde staat gelaten | DROP TABLE IF EXISTS _prisma_migrations CASCADE; en voer daarna migraties opnieuw uit |
Connection url is empty | DATABASE_URL niet ingesteld | Zorg ervoor dat de omgevingsvariabele is ingesteld in je deployment-omgeving |