3.4 KiB
3.4 KiB
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
执行步骤:
- 连接到MySQL数据库
- 执行以下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_voltagedevice_tempserver_device_idlatitudelongitudewalk_stepsy_walk_stepscreate_timecreate_byupdate_timeupdate_by
3. 重启应用
- 停止当前运行的Spring Boot应用
- 重新启动应用:
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"
预期结果
- SQL执行成功: 字段和索引添加成功
- 应用启动正常: 无SQL语法错误
- API调用成功: 返回正确的日志和轨迹数据
- 日志同步正常: 项圈设备数据能正确同步到
xq_client_log表
注意事项
- 数据备份: 执行ALTER TABLE前建议备份
xq_client_log表 - 权限检查: 确保数据库用户有ALTER TABLE权限
- 字段约束:
device_id字段设置为NOT NULL,如果表中已有数据,可能需要先更新现有记录 - 索引性能: 添加索引后查询性能会提升
后续步骤
字段添加成功后,可以:
- 测试完整的日志和轨迹功能
- 验证60分钟数据同步功能
- 在前端页面测试日志和轨迹显示