Skip to content

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:

sql
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:

sql
-- 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_database

Docker 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:

sql
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:

yaml
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/data

Maak vervolgens de applicatiegebruiker handmatig aan of via een ander init-script:

sql
-- 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

FoutOorzaakOplossing
permission denied for schema publicGebruiker mist schemarechtenGRANT ALL ON SCHEMA public TO your_user;
permission denied to create extension "vector"Extensie moet aangemaakt worden door supergebruikerVoer CREATE EXTENSION IF NOT EXISTS vector; uit als supergebruiker
type "vector" does not existpgvector-extensie niet geïnstalleerd of aangemaaktInstalleer pgvector in PostgreSQL en voer CREATE EXTENSION IF NOT EXISTS vector; uit
P3009 - failed migrationsEen eerdere migratie is mislukt en heeft een vervuilde staat gelatenDROP TABLE IF EXISTS _prisma_migrations CASCADE; en voer daarna migraties opnieuw uit
Connection url is emptyDATABASE_URL niet ingesteldZorg ervoor dat de omgevingsvariabele is ingesteld in je deployment-omgeving