diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index a9380683..34ac20bb 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -386,6 +386,19 @@ func (this *APINode) setupDB() error { return err } + // 检查是否为root用户 + config, _ := db.Config() + if config == nil { + return nil + } + dsnConfig, err := mysql.ParseDSN(config.Dsn) + if err != nil || dsnConfig == nil { + return err + } + if dsnConfig.User != "root" { + return nil + } + // 设置Innodb事务提交模式 { result, err := db.FindOne("SHOW VARIABLES WHERE variable_name='innodb_flush_log_at_trx_commit'") diff --git a/internal/setup/sql_dump.go b/internal/setup/sql_dump.go index 4e2341f6..9166d2bc 100644 --- a/internal/setup/sql_dump.go +++ b/internal/setup/sql_dump.go @@ -3,6 +3,7 @@ package setup import ( "errors" "fmt" + "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/types" @@ -137,12 +138,22 @@ func (this *SQLDump) Dump(db *dbs.DB) (result *SQLDumpResult, err error) { func (this *SQLDump) Apply(db *dbs.DB, newResult *SQLDumpResult, showLog bool) (ops []string, err error) { // 设置Innodb事务提交模式 { - - result, err := db.FindOne("SHOW VARIABLES WHERE variable_name='innodb_flush_log_at_trx_commit'") - if err == nil && result != nil { - var oldValue = result.GetInt("Value") - if oldValue == 1 { - _, _ = db.Exec("SET GLOBAL innodb_flush_log_at_trx_commit=2") + // 检查是否为root用户 + config, _ := db.Config() + if config == nil { + return nil, nil + } + dsnConfig, err := mysql.ParseDSN(config.Dsn) + if err != nil || dsnConfig == nil { + return nil, err + } + if dsnConfig.User == "root" { + result, err := db.FindOne("SHOW VARIABLES WHERE variable_name='innodb_flush_log_at_trx_commit'") + if err == nil && result != nil { + var oldValue = result.GetInt("Value") + if oldValue == 1 { + _, _ = db.Exec("SET GLOBAL innodb_flush_log_at_trx_commit=2") + } } } } diff --git a/internal/setup/sql_dump_test.go b/internal/setup/sql_dump_test.go index 3c22e6d8..4e146e08 100644 --- a/internal/setup/sql_dump_test.go +++ b/internal/setup/sql_dump_test.go @@ -76,7 +76,7 @@ func TestSQLDump_Apply(t *testing.T) { db2, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{ Driver: "mysql", - Dsn: "root:123456@tcp(192.168.2.60:3306)/db_edge_new?charset=utf8mb4&timeout=30s", + Dsn: "edge:123456@tcp(192.168.2.60:3306)/db_edge_new?charset=utf8mb4&timeout=30s", Prefix: "edge", }) if err != nil {