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

113 lines
3.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ====================================
-- 深度调试找出导致Data truncation的具体数据
-- ====================================
-- 1. 检查xq_client_log表的latitude字段定义
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'xq_client_log'
AND COLUMN_NAME = 'latitude';
-- 2. 检查iot_device_data表中项圈设备的所有字段长度
SELECT
device_id,
voltage,
temperature,
latitude,
longitude,
steps,
same_day_steps,
server_device_id,
LENGTH(CAST(voltage AS CHAR)) as voltage_len,
LENGTH(CAST(temperature AS CHAR)) as temp_len,
LENGTH(latitude) as lat_len,
LENGTH(longitude) as lng_len,
LENGTH(CAST(steps AS CHAR)) as steps_len,
LENGTH(CAST(same_day_steps AS CHAR)) as same_day_steps_len,
LENGTH(server_device_id) as server_id_len,
HEX(latitude) as lat_hex,
HEX(longitude) as lng_hex
FROM iot_device_data
WHERE device_type = 4
ORDER BY LENGTH(latitude) DESC
LIMIT 10;
-- 3. 检查是否有任何字段长度超过200
SELECT
device_id,
CASE
WHEN LENGTH(CAST(voltage AS CHAR)) > 200 THEN CONCAT('voltage:', LENGTH(CAST(voltage AS CHAR)))
WHEN LENGTH(CAST(temperature AS CHAR)) > 200 THEN CONCAT('temperature:', LENGTH(CAST(temperature AS CHAR)))
WHEN LENGTH(latitude) > 200 THEN CONCAT('latitude:', LENGTH(latitude))
WHEN LENGTH(longitude) > 200 THEN CONCAT('longitude:', LENGTH(longitude))
WHEN LENGTH(server_device_id) > 200 THEN CONCAT('server_device_id:', LENGTH(server_device_id))
ELSE 'OK'
END as field_issue,
voltage,
temperature,
latitude,
longitude,
server_device_id
FROM iot_device_data
WHERE device_type = 4
AND (
LENGTH(CAST(voltage AS CHAR)) > 200 OR
LENGTH(CAST(temperature AS CHAR)) > 200 OR
LENGTH(latitude) > 200 OR
LENGTH(longitude) > 200 OR
LENGTH(server_device_id) > 200
);
-- 4. 尝试插入第9条数据错误信息提到row 9
SELECT
device_id,
voltage,
temperature,
latitude,
longitude,
steps,
same_day_steps,
server_device_id,
ROW_NUMBER() OVER (ORDER BY update_time DESC) as row_num
FROM iot_device_data
WHERE device_type = 4
ORDER BY update_time DESC
LIMIT 10;
-- 5. 检查第9条数据的具体内容
WITH ranked_data AS (
SELECT
device_id,
voltage,
temperature,
latitude,
longitude,
steps,
same_day_steps,
server_device_id,
ROW_NUMBER() OVER (ORDER BY update_time DESC) as row_num
FROM iot_device_data
WHERE device_type = 4
ORDER BY update_time DESC
)
SELECT
device_id,
voltage,
temperature,
latitude,
longitude,
steps,
same_day_steps,
server_device_id,
LENGTH(latitude) as lat_len,
LENGTH(longitude) as lng_len,
HEX(latitude) as lat_hex,
HEX(longitude) as lng_hex
FROM ranked_data
WHERE row_num = 9;