mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 10:00:24 +08:00
在API节点启动时,如果无法连接到本地MySQL数据库,则尝试启动固定位置上的MySQL
This commit is contained in:
@@ -306,13 +306,27 @@ func (this *APINode) checkDB() error {
|
|||||||
logs.Println("[API_NODE]" + errString)
|
logs.Println("[API_NODE]" + errString)
|
||||||
this.addStartIssue("db", errString, this.dbIssueSuggestion(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
|
var maxTries = 600
|
||||||
if Tea.IsTesting() {
|
if Tea.IsTesting() {
|
||||||
maxTries = 600
|
maxTries = 600
|
||||||
}
|
}
|
||||||
for i := 0; i <= maxTries; i++ {
|
for i := 0; i <= maxTries; i++ {
|
||||||
_, err := db.Exec("SELECT 1")
|
_, err = db.Exec("SELECT 1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if i == maxTries-1 {
|
if i == maxTries-1 {
|
||||||
return err
|
return err
|
||||||
|
|||||||
Reference in New Issue
Block a user