Files
explorer-monorepo/scripts/verify-blockscout-db.sh

78 lines
2.8 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Script to verify Blockscout database configuration and tables
# Run from Proxmox host or inside VMID 5000
set -euo pipefail
VMID=5000
echo "=========================================="
echo "Blockscout Database Verification"
echo "=========================================="
echo ""
# Check if running from Proxmox host or inside container
if [ -f "/proc/1/cgroup" ] && grep -q "lxc" /proc/1/cgroup 2>/dev/null; then
# Inside LXC container
echo "Running inside VMID 5000"
EXEC_PREFIX=""
else
# On Proxmox host
echo "Running from Proxmox host, executing in VMID 5000"
EXEC_PREFIX="pct exec $VMID --"
fi
# Verify database credentials
echo "=== Database Credentials ==="
$EXEC_PREFIX docker exec -it blockscout-postgres env | grep -E 'POSTGRES_(USER|DB|PASSWORD)' || {
echo "❌ Cannot access blockscout-postgres container"
exit 1
}
echo ""
# Test database connection
echo "=== Database Connection Test ==="
$EXEC_PREFIX docker exec -it blockscout-postgres psql -U blockscout -d blockscout -c "SELECT version();" 2>&1 | head -3
if [ $? -eq 0 ]; then
echo "✅ Database connection successful"
else
echo "❌ Database connection failed"
exit 1
fi
echo ""
# Check for critical tables
echo "=== Critical Tables Check ==="
$EXEC_PREFIX docker exec -it blockscout-postgres psql -U blockscout -d blockscout << 'SQL'
SELECT
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'blocks')
THEN '✅ blocks' ELSE '❌ blocks MISSING' END as blocks,
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'transactions')
THEN '✅ transactions' ELSE '❌ transactions MISSING' END as transactions,
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'migrations_status')
THEN '✅ migrations_status' ELSE '❌ migrations_status MISSING' END as migrations_status,
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'addresses')
THEN '✅ addresses' ELSE '❌ addresses MISSING' END as addresses,
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'smart_contracts')
THEN '✅ smart_contracts' ELSE '❌ smart_contracts MISSING' END as smart_contracts;
SQL
echo ""
# Count total tables
echo "=== Database Statistics ==="
$EXEC_PREFIX docker exec -it blockscout-postgres psql -U blockscout -d blockscout -c "
SELECT
COUNT(*) as total_tables,
(SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_name IN ('blocks', 'transactions', 'migrations_status')) as critical_tables_exist
FROM information_schema.tables
WHERE table_schema = 'public';
"
echo ""
echo "=========================================="
echo "Verification complete!"
echo "=========================================="