diff --git a/internal/setup/sql_dump.go b/internal/setup/sql_dump.go index df9a3065..1bf1627a 100644 --- a/internal/setup/sql_dump.go +++ b/internal/setup/sql_dump.go @@ -52,6 +52,7 @@ var recordsTables = []*SQLRecordsTable{ { TableName: "edgeClientAgents", UniqueFields: []string{"code"}, + ExceptFields: []string{"countIPs"}, }, { TableName: "edgeClientAgentIPs", diff --git a/internal/setup/sql_executor.go b/internal/setup/sql_executor.go index fb0c005e..e7cd7a95 100644 --- a/internal/setup/sql_executor.go +++ b/internal/setup/sql_executor.go @@ -124,6 +124,12 @@ func (this *SQLExecutor) checkData(db *dbs.DB) error { return err } + // 更新Agents + err = this.checkClientAgents(db) + if err != nil { + return err + } + // 更新版本号 err = this.updateVersion(db, ComposeSQLVersion()) if err != nil { @@ -471,6 +477,29 @@ func (this *SQLExecutor) checkMetricItems(db *dbs.DB) error { return nil } +// 更新Agents表 +func (this *SQLExecutor) checkClientAgents(db *dbs.DB) error { + ones, _, err := db.FindOnes("SELECT id FROM edgeClientAgents") + if err != nil { + return err + } + + for _, one := range ones { + var agentId = one.GetInt64("id") + + countIPs, err := db.FindCol(0, "SELECT COUNT(*) FROM edgeClientAgentIPs WHERE agentId=?", agentId) + if err != nil { + return err + } + _, err = db.Exec("UPDATE edgeClientAgents SET countIPs=? WHERE id=?", countIPs, agentId) + if err != nil { + return err + } + } + + return nil +} + // 更新版本号 func (this *SQLExecutor) updateVersion(db *dbs.DB, version string) error { stmt, err := db.Prepare("SELECT COUNT(*) FROM edgeVersions") diff --git a/internal/setup/sql_executor_test.go b/internal/setup/sql_executor_test.go index 585197c4..45505aa0 100644 --- a/internal/setup/sql_executor_test.go +++ b/internal/setup/sql_executor_test.go @@ -6,7 +6,7 @@ import ( ) func TestSQLExecutor_Run(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -19,7 +19,7 @@ func TestSQLExecutor_Run(t *testing.T) { } func TestSQLExecutor_checkCluster(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -40,7 +40,7 @@ func TestSQLExecutor_checkCluster(t *testing.T) { } func TestSQLExecutor_checkMetricItems(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -61,7 +61,7 @@ func TestSQLExecutor_checkMetricItems(t *testing.T) { } func TestSQLExecutor_checkNS(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -80,3 +80,24 @@ func TestSQLExecutor_checkNS(t *testing.T) { } t.Log("ok") } + +func TestSQLExecutor_checkClientAgents(t *testing.T) { + var executor = NewSQLExecutor(&dbs.DBConfig{ + Driver: "mysql", + Prefix: "edge", + Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&multiStatements=true", + }) + db, err := dbs.NewInstanceFromConfig(executor.dbConfig) + if err != nil { + t.Fatal(err) + } + defer func() { + _ = db.Close() + }() + + err = executor.checkClientAgents(db) + if err != nil { + t.Fatal(err) + } + t.Log("ok") +}