import pymysql from app.core.config import settings def test_mysql_connection(): try: print(f"正在连接数据库: {settings.DATABASE_URL}") # 解析连接字符串 import re pattern = r'mysql\+pymysql://([^:]+):([^@]+)@([^:]+):(\d+)/(.+)' match = re.match(pattern, settings.DATABASE_URL) if match: username, password, host, port, database = match.groups() print(f"主机: {host}") print(f"端口: {port}") print(f"用户: {username}") print(f"数据库: {database}") # 尝试连接 connection = pymysql.connect( host=host, port=int(port), user=username, password=password, database=database, charset='utf8mb4' ) print("MySQL数据库连接成功!") # 测试查询 with connection.cursor() as cursor: cursor.execute("SELECT VERSION()") version = cursor.fetchone() print(f"MySQL版本: {version[0]}") cursor.execute("SHOW TABLES") tables = cursor.fetchall() print(f"现有表数量: {len(tables)}") for table in tables: print(f"- {table[0]}") connection.close() return True else: print("连接字符串格式错误") return False except Exception as e: print(f"数据库连接失败: {str(e)}") print(f"错误类型: {type(e).__name__}") return False if __name__ == "__main__": test_mysql_connection()