Files
cattleData/backend/TROUBLESHOOTING_500_ERROR.md

4.4 KiB
Raw Permalink Blame History

500 错误排查指南

问题描述

导入省份数据时出现 500 Internal Server Error

可能的原因和解决方案

1. 数据库表未创建

检查步骤:

-- 连接到数据库
USE cattleTends;

-- 检查表是否存在
SHOW TABLES LIKE 'cattleprovince';
SHOW TABLES LIKE 'cattlenational';

如果表不存在,执行以下 SQL

创建 cattleprovince 表

CREATE TABLE IF NOT EXISTS cattleprovince (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    province VARCHAR(255) NOT NULL UNIQUE COMMENT '省份名称',
    province_price DECIMAL(10, 2) COMMENT '省份均价',
    inventory_23th INT COMMENT '23年存栏万头',
    slaughter_23th INT COMMENT '23年出栏万头',
    inventory_24th INT COMMENT '24年存栏万头',
    slaughter_24th INT COMMENT '24年出栏万头',
    inventory_25th INT COMMENT '25年存栏万头',
    slaughter_25th INT COMMENT '25年出栏万头',
    create_time DATETIME COMMENT '创建时间',
    up_time DATETIME NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='省份数据表';

-- 添加索引
CREATE INDEX idx_province_name ON cattleprovince(province);
CREATE INDEX idx_province_price ON cattleprovince(province_price);
CREATE INDEX idx_inv_23 ON cattleprovince(inventory_23th);
CREATE INDEX idx_sla_23 ON cattleprovince(slaughter_23th);
CREATE INDEX idx_inv_24 ON cattleprovince(inventory_24th);
CREATE INDEX idx_sla_24 ON cattleprovince(slaughter_24th);
CREATE INDEX idx_inv_25 ON cattleprovince(inventory_25th);
CREATE INDEX idx_sla_25 ON cattleprovince(slaughter_25th);

创建 cattlenational 表

CREATE TABLE IF NOT EXISTS cattlenational (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    national_inventory_23th INT COMMENT '23年全国存栏量15个省份存栏量的总和',
    national_slaughter_23th INT COMMENT '23年全国出栏量15个省份出栏量的总和',
    national_inventory_24th INT COMMENT '24年全国存栏量15个省份存栏量的总和',
    national_slaughter_24th INT COMMENT '24年全国出栏量15个省份出栏量的总和',
    national_inventory_25th INT COMMENT '25年全国存栏量15个省份存栏量的总和',
    national_slaughter_25th INT COMMENT '25年全国出栏量15个省份出栏量的总和',
    create_time DATETIME COMMENT '创建时间',
    up_time DATETIME NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='全国总量数据表';

-- 添加索引
CREATE INDEX idx_national_inv_23 ON cattlenational(national_inventory_23th);
CREATE INDEX idx_national_sla_23 ON cattlenational(national_slaughter_23th);
CREATE INDEX idx_national_inv_24 ON cattlenational(national_inventory_24th);
CREATE INDEX idx_national_sla_24 ON cattlenational(national_slaughter_24th);
CREATE INDEX idx_national_inv_25 ON cattlenational(national_inventory_25th);
CREATE INDEX idx_national_sla_25 ON cattlenational(national_slaughter_25th);

2. 查看后端日志

检查后端日志文件:

# 如果使用 start.sh 启动
tail -f log.out

# 或者查看 Spring Boot 控制台输出

常见错误信息:

  • Table 'cattleTends.cattleprovince' doesn't exist - 表不存在
  • Table 'cattleTends.cattlenational' doesn't exist - 表不存在
  • Could not resolve placeholder - 配置问题
  • No bean found - 依赖注入问题

3. 检查后端服务是否正常运行

# 检查服务是否运行
ps aux | grep java | grep cattletends

# 检查端口是否监听
netstat -tlnp | grep 12240

4. 重新编译和重启

cd backend
mvn clean package
./start.sh restart

5. 测试接口

# 测试获取省份数据接口
curl http://localhost:12240/api/cattle-data/provinces

# 测试获取全国总量接口
curl http://localhost:12240/api/cattle-data/national

快速修复步骤

  1. 确保数据库表已创建(执行上面的 SQL
  2. 重新编译后端cd backend && mvn clean package
  3. 重启服务./start.sh restart
  4. 查看日志tail -f log.out
  5. 重新尝试导入

如果问题仍然存在

请提供以下信息:

  1. 后端日志的完整错误信息
  2. 数据库表是否已创建(执行 SHOW TABLES;
  3. Excel 文件的格式(列数、数据类型)