Tema
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_databaseExemplo 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/dataEm 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
| Erro | Causa | Correcao |
|---|---|---|
permission denied for schema public | Usuario nao possui permissoes no schema | GRANT ALL ON SCHEMA public TO your_user; |
permission denied to create extension "vector" | A extensao deve ser criada por um superusuario | Execute CREATE EXTENSION IF NOT EXISTS vector; como superusuario |
type "vector" does not exist | Extensao pgvector nao instalada ou nao criada | Instale o pgvector no PostgreSQL e execute CREATE EXTENSION IF NOT EXISTS vector; |
P3009 - failed migrations | Uma migracao anterior falhou e deixou estado inconsistente | Execute DROP TABLE IF EXISTS _prisma_migrations CASCADE; e reexecute as migracoes |
Connection url is empty | DATABASE_URL nao definida | Certifique-se de que a variavel de ambiente esta configurada no seu ambiente de deploy |