From c84f490645fc517b89ea5384c3ebb7b765f34bbc Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 17 Mar 2023 16:02:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8API=E8=8A=82=E7=82=B9=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=88=B0=E6=9C=AC=E5=9C=B0MySQL=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=EF=BC=8C=E5=88=99=E5=B0=9D=E8=AF=95=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=9B=BA=E5=AE=9A=E4=BD=8D=E7=BD=AE=E4=B8=8A=E7=9A=84?= =?UTF-8?q?MySQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/api_node.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 34ac20bb..e084e622 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -306,13 +306,27 @@ func (this *APINode) checkDB() error { logs.Println("[API_NODE]" + errString) this.addStartIssue("db", errString, this.dbIssueSuggestion(errString)) + // 决定是否尝试启动本地的MySQL + if strings.Contains(err.Error(), "connection refused") { + config, _ := db.Config() + if config != nil && (strings.Contains(config.Dsn, "tcp(127.0.0.1:") || strings.Contains(config.Dsn, "tcp(localhost:)")) && os.Getgid() == 0 /** ROOT 用户 **/ { + var mysqldSafeFile = "/usr/local/mysql/bin/mysqld_safe" + _, err = os.Stat(mysqldSafeFile) + if err == nil { + logs.Println("[API_NODE]try to start local mysql server from '" + mysqldSafeFile + "' ...") + var mysqlCmd = exec.Command(mysqldSafeFile) + _ = mysqlCmd.Start() + } + } + } + // 多次尝试 var maxTries = 600 if Tea.IsTesting() { maxTries = 600 } for i := 0; i <= maxTries; i++ { - _, err := db.Exec("SELECT 1") + _, err = db.Exec("SELECT 1") if err != nil { if i == maxTries-1 { return err