131 lines
4.4 KiB
Markdown
131 lines
4.4 KiB
Markdown
# 500 错误排查指南
|
||
|
||
## 问题描述
|
||
导入省份数据时出现 500 Internal Server Error
|
||
|
||
## 可能的原因和解决方案
|
||
|
||
### 1. 数据库表未创建
|
||
|
||
**检查步骤:**
|
||
```sql
|
||
-- 连接到数据库
|
||
USE cattleTends;
|
||
|
||
-- 检查表是否存在
|
||
SHOW TABLES LIKE 'cattleprovince';
|
||
SHOW TABLES LIKE 'cattlenational';
|
||
```
|
||
|
||
**如果表不存在,执行以下 SQL:**
|
||
|
||
#### 创建 cattleprovince 表
|
||
```sql
|
||
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 表
|
||
```sql
|
||
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. 查看后端日志
|
||
|
||
**检查后端日志文件:**
|
||
```bash
|
||
# 如果使用 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. 检查后端服务是否正常运行
|
||
|
||
```bash
|
||
# 检查服务是否运行
|
||
ps aux | grep java | grep cattletends
|
||
|
||
# 检查端口是否监听
|
||
netstat -tlnp | grep 12240
|
||
```
|
||
|
||
### 4. 重新编译和重启
|
||
|
||
```bash
|
||
cd backend
|
||
mvn clean package
|
||
./start.sh restart
|
||
```
|
||
|
||
### 5. 测试接口
|
||
|
||
```bash
|
||
# 测试获取省份数据接口
|
||
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 文件的格式(列数、数据类型)
|
||
|