From c38be26bbbb5444199d6e165f9ea31f1e761c925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=85=E8=AF=BA=E7=8B=90?= <212194964+foxcyber907@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:37:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Unix=20socket=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/database/sqlalchemy_models.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/common/database/sqlalchemy_models.py b/src/common/database/sqlalchemy_models.py index b62ff5cb6..c0f8a9466 100644 --- a/src/common/database/sqlalchemy_models.py +++ b/src/common/database/sqlalchemy_models.py @@ -489,11 +489,22 @@ def get_database_url(): encoded_user = quote_plus(config.mysql_user) encoded_password = quote_plus(config.mysql_password) - return ( - f"mysql+pymysql://{encoded_user}:{encoded_password}" - f"@{config.mysql_host}:{config.mysql_port}/{config.mysql_database}" - f"?charset={config.mysql_charset}" - ) + # 检查是否配置了Unix socket连接 + if config.mysql_unix_socket: + # 使用Unix socket连接 + encoded_socket = quote_plus(config.mysql_unix_socket) + return ( + f"mysql+pymysql://{encoded_user}:{encoded_password}" + f"@/{config.mysql_database}" + f"?unix_socket={encoded_socket}&charset={config.mysql_charset}" + ) + else: + # 使用标准TCP连接 + return ( + f"mysql+pymysql://{encoded_user}:{encoded_password}" + f"@{config.mysql_host}:{config.mysql_port}/{config.mysql_database}" + f"?charset={config.mysql_charset}" + ) else: # SQLite # 如果是相对路径,则相对于项目根目录 if not os.path.isabs(config.sqlite_path):