Files
cattleTransportation/tradeCattle/XQ_CLIENT_LOG_FIELD_FIX_GUIDE.md
2025-10-24 17:32:42 +08:00

3.4 KiB
Raw Blame History

xq_client_log表device_id字段缺失问题解决方案

问题描述

在测试智能项圈日志和轨迹功能时,遇到了以下错误:

SQLSyntaxErrorException: Unknown column 'device_id' in 'field list'

问题原因

xq_client_log 表存在,但缺少 device_id 字段导致MyBatis查询失败。

解决方案

1. 执行SQL脚本添加字段

文件: tradeCattle/add_device_id_to_xq_client_log.sql

执行步骤:

  1. 连接到MySQL数据库
  2. 执行以下SQL脚本
-- 为xq_client_log表添加device_id字段
SET @sql = (SELECT IF(
    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_SCHEMA = DATABASE() 
     AND TABLE_NAME = 'xq_client_log' 
     AND COLUMN_NAME = 'device_id') > 0,
    'SELECT "device_id字段已存在" as message',
    'ALTER TABLE xq_client_log ADD COLUMN device_id varchar(50) NOT NULL COMMENT "项圈编号" AFTER id'
));

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- 为device_id字段添加索引
SET @sql2 = (SELECT IF(
    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS 
     WHERE TABLE_SCHEMA = DATABASE() 
     AND TABLE_NAME = 'xq_client_log' 
     AND INDEX_NAME = 'idx_device_id') > 0,
    'SELECT "device_id索引已存在" as message',
    'ALTER TABLE xq_client_log ADD INDEX idx_device_id (device_id)'
));

PREPARE stmt2 FROM @sql2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;

-- 显示表结构确认
DESCRIBE xq_client_log;

2. 验证字段添加

执行SQL后应该看到 xq_client_log 表包含以下字段:

  • id (主键)
  • device_id (新增字段)
  • device_voltage
  • device_temp
  • server_device_id
  • latitude
  • longitude
  • walk_steps
  • y_walk_steps
  • create_time
  • create_by
  • update_time
  • update_by

3. 重启应用

  1. 停止当前运行的Spring Boot应用
  2. 重新启动应用:
    cd C:\cattleTransport\tradeCattle\aiotagro-cattle-trade
    mvn spring-boot:run
    

4. 测试功能

4.1 测试智能项圈日志查询

curl -X POST http://localhost:8080/api/deliveryDevice/getCollarLogs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "deviceId": "24075000139",
    "deliveryId": 86
  }'

4.2 测试智能项圈轨迹查询

curl -X POST http://localhost:8080/api/deliveryDevice/getCollarTrajectory \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "deviceId": "24075000139",
    "deliveryId": 86
  }'

4.3 测试设备日志同步

curl -X POST http://localhost:8080/api/deliveryDevice/manualSyncDeviceLogs \
  -H "Authorization: Bearer YOUR_TOKEN"

预期结果

  1. SQL执行成功: 字段和索引添加成功
  2. 应用启动正常: 无SQL语法错误
  3. API调用成功: 返回正确的日志和轨迹数据
  4. 日志同步正常: 项圈设备数据能正确同步到 xq_client_log

注意事项

  1. 数据备份: 执行ALTER TABLE前建议备份 xq_client_log
  2. 权限检查: 确保数据库用户有ALTER TABLE权限
  3. 字段约束: device_id 字段设置为NOT NULL如果表中已有数据可能需要先更新现有记录
  4. 索引性能: 添加索引后查询性能会提升

后续步骤

字段添加成功后,可以:

  1. 测试完整的日志和轨迹功能
  2. 验证60分钟数据同步功能
  3. 在前端页面测试日志和轨迹显示