debug: verbose prisma errors without exit-on-error

This commit is contained in:
Erik
2026-03-07 21:15:14 -03:00
parent f83a64bd83
commit 84697f5ecb

View File

@@ -1,65 +1,52 @@
#!/bin/sh #!/bin/sh
set -e # REMOVIDO set -e para o script não morrer antes de nos mostrar o erro
echo "🔎 --- SUPER DIAGNÓSTICO DE CONEXÃO (v2) ---" echo "🔎 --- SUPER DIAGNÓSTICO DE CONEXÃO (v3) ---"
# Extrai os dados da URL usando Node (muito mais seguro que sed) # Extrai os dados da URL usando Node
export DB_HOST=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.hostname); } catch(e) { console.log('error'); }") export DB_HOST=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.hostname); } catch(e) { console.log('error'); }")
export DB_PORT=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.port || '5432'); } catch(e) { console.log('5432'); }") export DB_PORT=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.port || '5432'); } catch(e) { console.log('5432'); }")
if [ "$DB_HOST" = "error" ]; then echo "📡 Host: $DB_HOST | Porta: $DB_PORT"
echo "❌ ERRO: A DATABASE_URL está em um formato inválido!"
exit 1
fi
echo "📡 Tentando contato com: $DB_HOST na porta $DB_PORT" # Função de espera com exibição de erro real
# Teste de porta usando Node
node -e "
const net = require('net');
const client = net.createConnection({ host: '$DB_HOST', port: parseInt('$DB_PORT') }, () => {
console.log('✅ REDE OK: A porta $DB_PORT está aberta!');
process.exit(0);
});
client.on('error', (err) => {
console.log('❌ FALHA DE REDE: Porta fechada ou host inacessível: ' + err.message);
process.exit(1);
});
setTimeout(() => { process.exit(1); }, 3000);
" || echo "⚠️ Aguardando rede estabilizar..."
# Função de espera
wait_for_db() { wait_for_db() {
echo "⏳ Validando login no banco..." echo "⏳ Validando login no banco..."
max_retries=15 max_retries=10
count=0 count=0
while true; do while [ $count -lt $max_retries ]; do
count=$((count + 1)) count=$((count + 1))
echo "🔄 Tentativa $count/$max_retries..." echo "🔄 Tentativa $count/$max_retries..."
# Tenta o dry-run do prisma # Roda o Prisma e captura TUDO o que ele disser
PRISMA_ERR=$(./node_modules/.bin/prisma db push --dry-run 2>&1) PRISMA_OUTPUT=$(./node_modules/.bin/prisma db push --dry-run 2>&1)
if [ $? -eq 0 ]; then EXIT_CODE=$?
echo "✅ SUCESSO: Banco conectado e autenticado!"
break if [ $EXIT_CODE -eq 0 ]; then
echo "✅ SUCESSO: Autenticado com sucesso!"
return 0
fi fi
echo "❌ FALHA: O Prisma disse:" echo "❌ ERRO DETECTADO PELO PRISMA:"
echo "$PRISMA_ERR" | grep -E "P1001|P1002|P1003|P1010|Authentication|denied|Database" || echo "Erro desconhecido (verificar logs)" echo "----------------------------------------------------------------"
echo "$PRISMA_OUTPUT"
echo "----------------------------------------------------------------"
if [ $count -gt $max_retries ]; then echo "😴 Aguardando 5s..."
echo "❌ Desistindo." sleep 5
exit 1
fi
sleep 4
done done
return 1
} }
if [ -n "$DATABASE_URL" ]; then if [ -n "$DATABASE_URL" ]; then
wait_for_db if wait_for_db; then
echo "🔄 Sincronizando tabelas..." echo "🔄 Sincronizando tabelas..."
./node_modules/.bin/prisma db push --accept-data-loss ./node_modules/.bin/prisma db push --accept-data-loss
./node_modules/.bin/prisma db seed || echo "⚠️ Seed já configurado." ./node_modules/.bin/prisma db seed || echo "⚠️ Seed ja existia."
else
echo "❌ FALHA CRÍTICA: Não foi possível conectar após várias tentativas."
exit 1
fi
fi fi
echo "🚀 Iniciando aplicação..." echo "🚀 Iniciando aplicação..."