194 lines
4.4 KiB
Markdown
194 lines
4.4 KiB
Markdown
# 重启后端服务指南
|
||
|
||
## 问题确认
|
||
后端日志显示执行的 SQL:
|
||
```sql
|
||
UPDATE vehicle SET license_plate=?, ..., update_time=?, updated_by=?
|
||
WHERE id=? AND is_delete=0
|
||
```
|
||
|
||
**这是旧代码!** 说明后端服务没有重启,还在使用旧的编译版本。
|
||
|
||
## 解决步骤
|
||
|
||
### 方法1:IDEA 重启服务(推荐)
|
||
|
||
1. **停止当前运行的服务**
|
||
- 在 IDEA 底部找到 "Run" 或 "Services" 窗口
|
||
- 找到正在运行的 Spring Boot 应用
|
||
- 点击红色方块按钮 ⬛ 停止服务
|
||
|
||
2. **清理编译缓存**(可选但推荐)
|
||
- IDEA 菜单:`Build` → `Clean Project`
|
||
- 或者:`Build` → `Rebuild Project`
|
||
|
||
3. **重新启动服务**
|
||
- 点击绿色三角按钮 ▶️ 启动服务
|
||
- 等待服务启动完成(看到 "Started Application" 日志)
|
||
|
||
### 方法2:命令行重启
|
||
|
||
#### Windows PowerShell
|
||
```powershell
|
||
# 1. 停止后端服务(找到 Java 进程并结束)
|
||
tasklist | findstr java
|
||
# 记下 PID,例如 21056
|
||
|
||
# 2. 结束进程
|
||
taskkill /F /PID 21056
|
||
|
||
# 3. 清理并重新编译
|
||
cd C:\cattleTransport\tradeCattle
|
||
mvn clean package -DskipTests
|
||
|
||
# 4. 重新启动服务
|
||
cd aiotagro-cattle-trade
|
||
java -jar target\aiotagro-cattletrade-1.0.1.jar
|
||
```
|
||
|
||
#### Linux/Mac
|
||
```bash
|
||
# 1. 找到并停止 Java 进程
|
||
ps aux | grep java
|
||
kill -9 <PID>
|
||
|
||
# 2. 清理并重新编译
|
||
cd /path/to/tradeCattle
|
||
mvn clean package -DskipTests
|
||
|
||
# 3. 重新启动服务
|
||
cd aiotagro-cattle-trade
|
||
java -jar target/aiotagro-cattletrade-1.0.1.jar
|
||
```
|
||
|
||
### 方法3:使用 Spring Boot DevTools(如果已配置)
|
||
如果项目配置了 Spring Boot DevTools:
|
||
- 保存文件后会自动重启
|
||
- 但完全替换方法时,建议手动重启
|
||
|
||
## 验证步骤
|
||
|
||
### 1. 检查后端日志
|
||
重启后,后端应该显示新的启动日志:
|
||
```
|
||
Started Application in X.XXX seconds
|
||
```
|
||
|
||
### 2. 测试删除功能
|
||
1. 刷新前端页面(Ctrl+F5)
|
||
2. 进入"车辆管理"页面
|
||
3. 点击"删除"按钮
|
||
4. 观察后端日志
|
||
|
||
### 3. 期望的日志输出
|
||
**新代码应该显示**:
|
||
```
|
||
[VEHICLE-DELETE] 开始逻辑删除车辆,ID: 3
|
||
[VEHICLE-DELETE] 车辆信息 - 车牌号: 鄂A 66662, 当前 is_delete: 0
|
||
UPDATE vehicle SET is_delete=1 WHERE id=3
|
||
[VEHICLE-DELETE] ✅ 逻辑删除成功,车牌号: 鄂A 66662, 操作人ID: 11
|
||
```
|
||
|
||
**关键点**:
|
||
- ✅ SQL 中只有 `SET is_delete=1`
|
||
- ✅ 没有更新 `license_plate`, `car_front_photo` 等其他字段
|
||
- ✅ 日志显示 `[VEHICLE-DELETE]` 标签
|
||
|
||
### 4. 验证数据库
|
||
```sql
|
||
-- 查看该记录
|
||
SELECT id, license_plate, is_delete, update_time
|
||
FROM vehicle
|
||
WHERE id = 3;
|
||
|
||
-- 预期结果:is_delete = 1
|
||
```
|
||
|
||
### 5. 验证前端列表
|
||
- ✅ 列表自动刷新
|
||
- ✅ 已删除的车辆不再显示
|
||
- ✅ 显示"删除成功"提示
|
||
|
||
## 常见问题
|
||
|
||
### Q1: 找不到正在运行的服务?
|
||
**检查**:
|
||
```powershell
|
||
# Windows
|
||
netstat -ano | findstr :16200
|
||
# 查看哪个进程占用了 16200 端口
|
||
|
||
# 结束进程
|
||
taskkill /F /PID <进程ID>
|
||
```
|
||
|
||
### Q2: Maven 编译失败?
|
||
**清理并重试**:
|
||
```powershell
|
||
cd C:\cattleTransport\tradeCattle
|
||
mvn clean
|
||
mvn compile -DskipTests
|
||
```
|
||
|
||
### Q3: 重启后还是旧代码?
|
||
**可能原因**:
|
||
1. IDEA 没有自动编译
|
||
- 解决:`Build` → `Rebuild Project`
|
||
2. 启动了错误的配置
|
||
- 解决:检查 Run Configuration
|
||
3. 类加载器缓存
|
||
- 解决:完全关闭 IDEA 并重新打开
|
||
|
||
### Q4: 端口被占用?
|
||
```powershell
|
||
# 查看占用端口的进程
|
||
netstat -ano | findstr :16200
|
||
|
||
# 结束进程
|
||
taskkill /F /PID <进程ID>
|
||
```
|
||
|
||
## 快速重启脚本
|
||
|
||
### Windows (PowerShell)
|
||
创建 `restart-backend.ps1`:
|
||
```powershell
|
||
# 停止后端服务
|
||
$process = Get-Process | Where-Object {$_.ProcessName -eq "java" -and $_.MainWindowTitle -like "*cattletrade*"}
|
||
if ($process) {
|
||
Stop-Process -Id $process.Id -Force
|
||
Write-Host "已停止后端服务"
|
||
}
|
||
|
||
# 重新编译
|
||
cd C:\cattleTransport\tradeCattle
|
||
mvn clean compile -DskipTests
|
||
|
||
# 重新启动(在 IDEA 中手动启动)
|
||
Write-Host "编译完成,请在 IDEA 中重新启动服务"
|
||
```
|
||
|
||
运行:
|
||
```powershell
|
||
powershell -ExecutionPolicy Bypass -File restart-backend.ps1
|
||
```
|
||
|
||
## 总结
|
||
|
||
✅ **关键步骤**:
|
||
1. 停止后端服务
|
||
2. 清理编译缓存(可选)
|
||
3. 重新启动服务
|
||
4. 验证日志输出
|
||
|
||
✅ **验证标志**:
|
||
- 日志显示 `UPDATE vehicle SET is_delete=1`
|
||
- 数据库中 `is_delete` 变为 `1`
|
||
- 前端列表中记录消失
|
||
|
||
⚠️ **注意**:
|
||
- 必须完全停止旧服务
|
||
- 确保编译成功
|
||
- 验证新代码是否生效
|
||
|