fix: db
This commit is contained in:
@@ -1,26 +1,34 @@
|
||||
-- Only devices.created_at / updated_at. first_seen_at / last_seen_at
|
||||
-- were dropped (see 2026_08_04_000002_simplify_devices_columns).
|
||||
--
|
||||
-- 1) 备份 devices
|
||||
-- 2) 把 @cutoff 改成切时区那一刻
|
||||
-- 3) 先预览,再 START TRANSACTION … COMMIT
|
||||
-- 4) 提交后:php artisan coruna:daily-stats --all
|
||||
-- Only devices.created_at / updated_at.
|
||||
-- 用 mysql -uroot -p -t -vv coruna < 本文件 才会打印行数。
|
||||
-- 已成功跑过就不要再跑(会再减 8 小时)。
|
||||
-- 改完后:php artisan coruna:daily-stats --all
|
||||
|
||||
SET time_zone = '+08:00';
|
||||
SET @cutoff = '2026-09-16 14:00:00'; -- TODO: 改成实际切时区的时间
|
||||
|
||||
SELECT 'created_at' AS col, COUNT(*) AS n, MIN(created_at) AS mn, MAX(created_at) AS mx
|
||||
SHOW COLUMNS FROM devices LIKE '%_at';
|
||||
|
||||
SELECT 'preview' AS step, 'created_at' AS col, COUNT(*) AS n,
|
||||
MIN(created_at) AS mn, MAX(created_at) AS mx
|
||||
FROM devices WHERE created_at IS NOT NULL AND created_at < @cutoff
|
||||
UNION ALL SELECT 'updated_at', COUNT(*), MIN(updated_at), MAX(updated_at)
|
||||
UNION ALL
|
||||
SELECT 'preview', 'updated_at', COUNT(*), MIN(updated_at), MAX(updated_at)
|
||||
FROM devices WHERE updated_at IS NOT NULL AND updated_at < @cutoff;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE devices SET created_at = DATE_SUB(created_at, INTERVAL 8 HOUR)
|
||||
WHERE created_at IS NOT NULL AND created_at < @cutoff;
|
||||
SELECT ROW_COUNT() AS created_at_updated;
|
||||
|
||||
UPDATE devices SET updated_at = DATE_SUB(updated_at, INTERVAL 8 HOUR)
|
||||
WHERE updated_at IS NOT NULL AND updated_at < @cutoff;
|
||||
SELECT ROW_COUNT() AS updated_at_updated;
|
||||
|
||||
SELECT id, device_id, created_at, updated_at
|
||||
FROM devices
|
||||
WHERE created_at IS NOT NULL
|
||||
ORDER BY id ASC
|
||||
LIMIT 3;
|
||||
|
||||
-- 后台看一台改时区前的设备,时间对了再 COMMIT
|
||||
COMMIT;
|
||||
-- ROLLBACK;
|
||||
|
||||
Reference in New Issue
Block a user