114 lines
4.2 KiB
Python
114 lines
4.2 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
强制修复脚本:删除并重建表,确保file_path字段正确
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import sys
|
|||
|
|
from lib.db import get_connection
|
|||
|
|
|
|||
|
|
def force_rebuild():
|
|||
|
|
"""强制重建表"""
|
|||
|
|
print("="*60)
|
|||
|
|
print("强制修复数据库表")
|
|||
|
|
print("="*60)
|
|||
|
|
|
|||
|
|
conn = None
|
|||
|
|
try:
|
|||
|
|
conn = get_connection()
|
|||
|
|
cursor = conn.cursor()
|
|||
|
|
|
|||
|
|
# 1. 删除旧表
|
|||
|
|
print("\n1. 删除旧表...")
|
|||
|
|
cursor.execute("DROP TABLE IF EXISTS t_daily_report_history")
|
|||
|
|
cursor.execute("DROP TABLE IF EXISTS t_daily_report_config")
|
|||
|
|
conn.commit()
|
|||
|
|
print(" ✓ 旧表已删除")
|
|||
|
|
|
|||
|
|
# 2. 重建配置表
|
|||
|
|
print("\n2. 重建配置表...")
|
|||
|
|
create_config_table = """
|
|||
|
|
CREATE TABLE t_daily_report_config (
|
|||
|
|
id BIGINT NOT NULL COMMENT '配置ID',
|
|||
|
|
config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
|
|||
|
|
split_type VARCHAR(20) NOT NULL COMMENT '拆分方式',
|
|||
|
|
split_value VARCHAR(100) NOT NULL COMMENT '拆分值',
|
|||
|
|
split_name VARCHAR(200) NULL COMMENT '拆分显示名称',
|
|||
|
|
selected_fields VARCHAR(3000) NOT NULL COMMENT '选择的字段列表',
|
|||
|
|
sum_fields VARCHAR(3000) NULL COMMENT '求和字段列表',
|
|||
|
|
is_active TINYINT NULL COMMENT '是否启用',
|
|||
|
|
sort_order INT NULL COMMENT '排序顺序',
|
|||
|
|
create_time DATETIME NULL COMMENT '创建时间',
|
|||
|
|
update_time DATETIME NULL COMMENT '更新时间'
|
|||
|
|
)
|
|||
|
|
UNIQUE KEY(id)
|
|||
|
|
DISTRIBUTED BY HASH(id) BUCKETS 1
|
|||
|
|
PROPERTIES("replication_num" = "1")
|
|||
|
|
"""
|
|||
|
|
cursor.execute(create_config_table)
|
|||
|
|
conn.commit()
|
|||
|
|
print(" ✓ 配置表已创建")
|
|||
|
|
|
|||
|
|
# 3. 重建历史表
|
|||
|
|
print("\n3. 重建历史表...")
|
|||
|
|
create_history_table = """
|
|||
|
|
CREATE TABLE t_daily_report_history (
|
|||
|
|
id BIGINT NOT NULL COMMENT '历史ID',
|
|||
|
|
report_date VARCHAR(20) NULL COMMENT '报表日期',
|
|||
|
|
start_time VARCHAR(50) NULL COMMENT '开始时间',
|
|||
|
|
end_time VARCHAR(50) NULL COMMENT '结束时间',
|
|||
|
|
split_type VARCHAR(20) NULL COMMENT '拆分方式',
|
|||
|
|
split_value VARCHAR(100) NULL COMMENT '拆分值',
|
|||
|
|
split_name VARCHAR(200) NULL COMMENT '拆分显示名称',
|
|||
|
|
config_id BIGINT NULL COMMENT '配置ID',
|
|||
|
|
total_orders INT NULL COMMENT '订单总数',
|
|||
|
|
total_amount DECIMAL(10,2) NULL COMMENT '总金额',
|
|||
|
|
sum_results VARCHAR(2000) NULL COMMENT '求和结果',
|
|||
|
|
file_path VARCHAR(500) NULL COMMENT '文件路径',
|
|||
|
|
status TINYINT NULL COMMENT '状态',
|
|||
|
|
create_time DATETIME NULL COMMENT '创建时间'
|
|||
|
|
)
|
|||
|
|
UNIQUE KEY(id)
|
|||
|
|
DISTRIBUTED BY HASH(id) BUCKETS 1
|
|||
|
|
PROPERTIES("replication_num" = "1")
|
|||
|
|
"""
|
|||
|
|
cursor.execute(create_history_table)
|
|||
|
|
conn.commit()
|
|||
|
|
print(" ✓ 历史表已创建")
|
|||
|
|
|
|||
|
|
# 4. 验证表结构
|
|||
|
|
print("\n4. 验证表结构...")
|
|||
|
|
cursor.execute("DESCRIBE t_daily_report_history")
|
|||
|
|
columns = cursor.fetchall()
|
|||
|
|
print(" 历史表字段:")
|
|||
|
|
for col in columns:
|
|||
|
|
print(f" - {col[0]}: {col[1]}")
|
|||
|
|
|
|||
|
|
# 检查file_path字段
|
|||
|
|
file_path_col = [c for c in columns if c[0] == 'file_path']
|
|||
|
|
if file_path_col:
|
|||
|
|
print(f"\n ✓ file_path 字段存在: {file_path_col[0][1]}")
|
|||
|
|
else:
|
|||
|
|
print("\n ❌ file_path 字段不存在!")
|
|||
|
|
|
|||
|
|
print("\n" + "="*60)
|
|||
|
|
print("✓ 修复完成!")
|
|||
|
|
print("="*60)
|
|||
|
|
print("\n下一步:")
|
|||
|
|
print("1. 重启服务: python app.py")
|
|||
|
|
print("2. 创建配置")
|
|||
|
|
print("3. 生成日报")
|
|||
|
|
print("4. 查看历史记录(应该有下载按钮)")
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"\n❌ 修复失败: {e}")
|
|||
|
|
import traceback
|
|||
|
|
traceback.print_exc()
|
|||
|
|
finally:
|
|||
|
|
if conn:
|
|||
|
|
conn.close()
|
|||
|
|
|
|||
|
|
input("\n按回车键退出...")
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
force_rebuild()
|