ALM-2 / backend /tests /debug_connection.py
ACA050's picture
Upload 520 files
2ed8996 verified
"""
Debug Database Connection Issues
"""
import asyncio
import sys
from pathlib import Path
import logging
from urllib.parse import quote_plus
# Add backend to path
backend_path = Path(__file__).parent
sys.path.insert(0, str(backend_path))
from core.config import settings
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def debug_database_url():
"""Debug and fix database URL"""
original_url = settings.DATABASE_URL
logger.info(f"🔍 Original DATABASE_URL: {original_url}")
# Parse the URL to identify issues
if "postgres:@" in original_url and original_url.count("@") > 2:
logger.error("❌ Issue detected: Missing password in database URL")
logger.error("❌ Format should be: postgresql+asyncpg://postgres:PASSWORD@host:port/db")
# Extract components
parts = original_url.split("@")
logger.info(f"📋 URL parts: {parts}")
# The issue is that password is missing
# Current: postgres:@Jk=54##0@@6@1@db...
# Should be: postgres:PASSWORD@db...
return False
return True
def suggest_fix():
"""Suggest how to fix the database URL"""
logger.info("🔧 SUGGESTED FIXES:")
logger.info("1. Get the actual Supabase database password")
logger.info("2. URL-encode special characters in password")
logger.info("3. Update DATABASE_URL with correct format")
# Example of proper URL encoding
example_password = "@Jk=54##0@@6@1@"
encoded_password = quote_plus(example_password)
logger.info(f"📝 Example encoding:")
logger.info(f" Original: {example_password}")
logger.info(f" Encoded: {encoded_password}")
# Show what the corrected URL should look like
corrected_url = f"postgresql+asyncpg://postgres:{encoded_password}@db.txtxywmflduurfhfhnlu.supabase.co:5432/postgres"
logger.info(f"🔧 Corrected URL example: {corrected_url}")
if __name__ == "__main__":
logger.info("🚀 Database Connection Debug")
if debug_database_url():
logger.info("✅ Database URL format looks correct")
else:
logger.info("❌ Database URL has issues")
suggest_fix()