Commit bd05440d by yiling.shen

修复数据库连接和表结构问题;添加表结构检查和自动修复功能

parent 51baad37
...@@ -194,17 +194,21 @@ temp_callback_records = {} ...@@ -194,17 +194,21 @@ temp_callback_records = {}
if CALLBACK_AVAILABLE: if CALLBACK_AVAILABLE:
try: try:
# 直接使用环境变量构建数据库配置 # 直接使用环境变量构建数据库配置
db_config = { db_host = os.getenv('DB_HOST', 'mysql')
'host': os.getenv('DB_HOST', 'mysql'), db_port = int(os.getenv('DB_PORT', '3306'))
'port': int(os.getenv('DB_PORT', '3306')), db_user = os.getenv('DB_USER', 'callback_user')
'user': os.getenv('DB_USER', 'callback_user'), db_password = os.getenv('DB_PASSWORD', '')
'password': os.getenv('DB_PASSWORD', ''), db_name = os.getenv('DB_NAME', 'callback_system')
'database': os.getenv('DB_NAME', 'callback_system'),
'charset': 'utf8mb4' print(f"尝试连接数据库: {db_host}:{db_port}")
} db_manager = MySQLCallbackRecordManager(
host=db_host,
print(f"尝试连接数据库: {db_config['host']}:{db_config['port']}") port=db_port,
db_manager = MySQLCallbackRecordManager(db_config) user=db_user,
password=db_password,
database=db_name,
charset='utf8mb4'
)
print("✅ 回访记录数据库管理器初始化成功") print("✅ 回访记录数据库管理器初始化成功")
except Exception as e: except Exception as e:
print(f"⚠️ 回访记录数据库管理器初始化失败: {e}") print(f"⚠️ 回访记录数据库管理器初始化失败: {e}")
......
...@@ -124,9 +124,29 @@ class MySQLCallbackRecordManager: ...@@ -124,9 +124,29 @@ class MySQLCallbackRecordManager:
# 连接到指定数据库并创建表 # 连接到指定数据库并创建表
with self.get_connection() as conn: with self.get_connection() as conn:
with conn.cursor() as cursor: with conn.cursor() as cursor:
# 检查表是否存在
cursor.execute("SHOW TABLES LIKE 'callback_records'")
table_exists = cursor.fetchone()
if table_exists:
# 检查表结构
cursor.execute("DESCRIBE callback_records")
columns = [row[0] for row in cursor.fetchall()]
# 检查必需的字段
required_columns = ['record_id', 'case_number', 'callback_methods', 'callback_record', 'operator', 'create_time']
missing_columns = [col for col in required_columns if col not in columns]
if missing_columns:
print(f"表结构不完整,缺少字段: {missing_columns}")
print("删除旧表并重新创建...")
cursor.execute("DROP TABLE callback_records")
table_exists = False
if not table_exists:
# 创建回访记录表 # 创建回访记录表
create_table_sql = """ create_table_sql = """
CREATE TABLE IF NOT EXISTS callback_records ( CREATE TABLE callback_records (
record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID', record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
case_number VARCHAR(50) NOT NULL COMMENT '病历号', case_number VARCHAR(50) NOT NULL COMMENT '病历号',
callback_methods JSON NOT NULL COMMENT '回访方式(JSON格式)', callback_methods JSON NOT NULL COMMENT '回访方式(JSON格式)',
...@@ -141,7 +161,9 @@ class MySQLCallbackRecordManager: ...@@ -141,7 +161,9 @@ class MySQLCallbackRecordManager:
""" """
cursor.execute(create_table_sql) cursor.execute(create_table_sql)
print("回访记录表创建成功或已存在") print("回访记录表创建成功")
else:
print("回访记录表已存在且结构正确")
except Exception as e: except Exception as e:
print(f"数据库初始化失败: {e}") print(f"数据库初始化失败: {e}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment