fix(dashboard): 修复大屏主机列表恒为空 —— 区域表名错误且错误被静默吞掉
现象:/servers 资产里有 31 台,/dashboards 大屏一台都不显示。
根因:GetLatestReports 的 SQL 中 JOIN 了不存在的表 asset_regions,
实际表名是 asset_cloud_regions(见 model/server.go 的 Region.TableName())。
查询直接报 Error 1146,但 Scan() 的错误未校验,函数静默返回空数组,
接口始终 200 + data:[],因此前端无任何报错可循。
- agent.go: JOIN 改为 asset_cloud_regions,并补上错误校验与 500 响应
- agent_report_test.go: 移除手工创建的 asset_regions,
改由 AutoMigrate(&model.Server{}) 级联建立 asset_cloud_regions,
避免测试用错误表名掩盖生产问题
验证:/agent/latest 由 0 台恢复为 31 台(含未装 Agent 的 not_installed 主机)。
// Logan.Li
This commit is contained in:
1 parent
4010b4fd70
commit
610402d47f
2 files changed
+13
-6
No files matched your search
@@ -135,9 +135,8 @@ func TestGetLatestReportsUsesUTCTimeBoundary(t *testing.T) {
|
||||
if err := db.AutoMigrate(&model.Server{}, &model.AgentReport{}); err != nil {
|
||||
t.Fatalf("迁移测试表失败: %v", err)
|
||||
}
|
||||
if err := db.Exec("CREATE TABLE asset_regions (id INTEGER PRIMARY KEY, name TEXT)").Error; err != nil {
|
||||
t.Fatalf("创建区域测试表失败: %v", err)
|
||||
}
|
||||
// asset_cloud_regions 由上面的 AutoMigrate(&model.Server{}) 级联建立,
|
||||
// 无需手工建表;此前手工建 asset_regions 反而掩盖了生产侧同名的错误 join。 // Logan.Li
|
||||
|
||||
server := model.Server{
|
||||
Hostname: "c-redis-cluster-3",
|
||||
|
||||
Reference in new issue
Block a user