debug: verbose prisma errors without exit-on-error
This commit is contained in:
@@ -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..."
|
||||||
|
|||||||
Reference in New Issue
Block a user