Skip to content

Configuracao do Banco de Dados

O Capyshop requer PostgreSQL 17+ com a extensao pgvector instalada.

Pre-requisitos

  • Servidor PostgreSQL 17+ com pgvector instalado
  • Acesso ao superusuario postgres (ou equivalente) para a configuracao inicial

1. Criar o Banco de Dados e o Usuario

Conecte-se ao seu servidor PostgreSQL como superusuario (ex: postgres) e execute:

sql
CREATE DATABASE your_database;
CREATE USER your_user WITH PASSWORD 'your_secure_password';

2. Configurar Permissoes do Banco de Dados

Conecte-se ao banco de dados recem-criado e conceda as permissoes necessarias:

sql
-- Conectar ao banco de dados
\c your_database

-- Conceder privilegios ao usuario
GRANT ALL PRIVILEGES ON DATABASE your_database TO your_user;
GRANT ALL ON SCHEMA public TO your_user;

-- Criar a extensao pgvector (requer superusuario)
CREATE EXTENSION IF NOT EXISTS vector;

A extensao vector deve ser criada por um superusuario. Uma vez criada, o usuario da aplicacao pode utiliza-la sem privilegios de superusuario.

3. Definir a URL de Conexao

Defina a variavel de ambiente DATABASE_URL com os dados da sua conexao:

DATABASE_URL=postgresql://your_user:your_secure_password@localhost:5432/your_database

Exemplo com Docker Compose

Se estiver usando a imagem personalizada do PostgreSQL com pgvector, voce pode automatizar a configuracao com um script de inicializacao.

Crie o arquivo init-db.sql:

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;

Monte-o no seu 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

Em seguida, crie o usuario da aplicacao manualmente ou por meio de outro script de inicializacao:

sql
-- Em um segundo script de inicializacao (ex: 00-create-user.sql, executa antes do init-db.sql)
CREATE USER your_user WITH PASSWORD 'your_secure_password';

Nota: Scripts em /docker-entrypoint-initdb.d/ so sao executados quando o diretorio de dados do PostgreSQL esta vazio (primeira execucao). Se o banco de dados ja existir, execute os comandos SQL manualmente.

Solucao de Problemas

ErroCausaCorrecao
permission denied for schema publicUsuario nao possui permissoes no schemaGRANT ALL ON SCHEMA public TO your_user;
permission denied to create extension "vector"A extensao deve ser criada por um superusuarioExecute CREATE EXTENSION IF NOT EXISTS vector; como superusuario
type "vector" does not existExtensao pgvector nao instalada ou nao criadaInstale o pgvector no PostgreSQL e execute CREATE EXTENSION IF NOT EXISTS vector;
P3009 - failed migrationsUma migracao anterior falhou e deixou estado inconsistenteExecute DROP TABLE IF EXISTS _prisma_migrations CASCADE; e reexecute as migracoes
Connection url is emptyDATABASE_URL nao definidaCertifique-se de que a variavel de ambiente esta configurada no seu ambiente de deploy