Commit bd05440d by yiling.shen

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

parent 51baad37
......@@ -194,17 +194,21 @@ temp_callback_records = {}
if CALLBACK_AVAILABLE:
try:
# 直接使用环境变量构建数据库配置
db_config = {
'host': os.getenv('DB_HOST', 'mysql'),
'port': int(os.getenv('DB_PORT', '3306')),
'user': os.getenv('DB_USER', 'callback_user'),
'password': os.getenv('DB_PASSWORD', ''),
'database': os.getenv('DB_NAME', 'callback_system'),
'charset': 'utf8mb4'
}
db_host = os.getenv('DB_HOST', 'mysql')
db_port = int(os.getenv('DB_PORT', '3306'))
db_user = os.getenv('DB_USER', 'callback_user')
db_password = os.getenv('DB_PASSWORD', '')
db_name = os.getenv('DB_NAME', 'callback_system')
print(f"尝试连接数据库: {db_config['host']}:{db_config['port']}")
db_manager = MySQLCallbackRecordManager(db_config)
print(f"尝试连接数据库: {db_host}:{db_port}")
db_manager = MySQLCallbackRecordManager(
host=db_host,
port=db_port,
user=db_user,
password=db_password,
database=db_name,
charset='utf8mb4'
)
print("✅ 回访记录数据库管理器初始化成功")
except Exception as e:
print(f"⚠️ 回访记录数据库管理器初始化失败: {e}")
......
......@@ -124,24 +124,46 @@ class MySQLCallbackRecordManager:
# 连接到指定数据库并创建表
with self.get_connection() as conn:
with conn.cursor() as cursor:
# 创建回访记录表
create_table_sql = """
CREATE TABLE IF NOT EXISTS callback_records (
record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
case_number VARCHAR(50) NOT NULL COMMENT '病历号',
callback_methods JSON NOT NULL COMMENT '回访方式(JSON格式)',
callback_record TEXT NOT NULL COMMENT '回访记录内容',
operator VARCHAR(100) NOT NULL COMMENT '操作员',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_case_number (case_number),
INDEX idx_create_time (create_time),
INDEX idx_operator (operator)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='回访记录表'
"""
# 检查表是否存在
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
cursor.execute(create_table_sql)
print("回访记录表创建成功或已存在")
if not table_exists:
# 创建回访记录表
create_table_sql = """
CREATE TABLE callback_records (
record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
case_number VARCHAR(50) NOT NULL COMMENT '病历号',
callback_methods JSON NOT NULL COMMENT '回访方式(JSON格式)',
callback_record TEXT NOT NULL COMMENT '回访记录内容',
operator VARCHAR(100) NOT NULL COMMENT '操作员',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_case_number (case_number),
INDEX idx_create_time (create_time),
INDEX idx_operator (operator)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='回访记录表'
"""
cursor.execute(create_table_sql)
print("回访记录表创建成功")
else:
print("回访记录表已存在且结构正确")
except Exception as 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