首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在引擎运行期间终止mariadb服务

在引擎运行期间终止mariadb服务
EN

Stack Overflow用户
提问于 2020-09-14 14:54:45
回答 1查看 37关注 0票数 0

我的应用程序连接到另一台服务器上的Maria Db,因此一旦启动引擎,它通过查询数据库获取数据,我要做的是,我的应用程序每5秒从DB查询一次,我刚刚通过以下方式终止了maria DB服务

代码语言:javascript
复制
service mariadb stop

在我的应用程序中执行此操作之后,将引发以下错误的查询:

代码语言:javascript
复制
panic: runtime error: invalid memory address or nil pointer dereference
    panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x54c9a6]

goroutine 50 [running]:
database/sql.(*Rows).close(0x0, 0x0, 0x0, 0x0, 0x0)
    /home/go1.14/go/src/database/sql/sql.go:3063 +0x76
database/sql.(*Rows).Close(0x0, 0x0, 0x0)
    /home/go1.14/go/src/database/sql/sql.go:3059 +0x33
panic(0x8d03e0, 0xf3dd00)
    /home/go1.14/go/src/runtime/panic.go:969 +0x166
database/sql.(*Rows).Next(0x0, 0x1)
    /home/go1.14/go/src/database/sql/sql.go:2744 +0x30
path-to-file/loadConfig.LoadFromDB(0x9ff760, 0xc0000240a0, 0xc000192000, 0xf, 0x0, 0x0, 0x0, 0x0)
    path-to-file/loadConfig/loadConfig.go:65 +0x1a2

我的代码如下所示:

代码语言:javascript
复制
func LoadFromDB(Ctx context.Context, Conn *sql.DB, modId int) (map[string][]string, map[string]string, error) {
    rows, err := Conn.Query(getQueryFromFile("QUERY"),modId)

    if err != nil {
        log.Println("LOAD CONFIG: Error establishing connection to DB")
    }
    defer rows.Close()
    configValues := make(map[string][]string)
    configTimeVal := make(map[string]string)
    for rows.Next() {
        configParam := ""
        configVal := ""
        var configLastUpdated string
        eror := rows.Scan(&configParam, &configVal, &configLastUpdated)
        if eror != nil {
            return nil, nil, eror
        } else {
            configValues[configParam] = append(configValues[configParam], configVal)
            configTimeVal[configParam] = configLastUpdated
        }
    }

        return configValues, configTimeVal, nil
    }

当maria db服务停止时,你们能帮助我处理这种情况吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 15:00:11

当错误为非零时,您丢失了一个return,因此该函数一直在运行。试试这个:

代码语言:javascript
复制
    if err != nil {
        log.Println("LOAD CONFIG: Error establishing connection to DB")
        return nil, nil, err
    }

您还需要处理来自Next()函数的错误;请参阅文档:

下一步准备使用扫描方法读取下一个结果行。它在成功时返回true,如果没有下一个结果行或准备过程中发生错误,则返回false。应咨询Err以区分这两种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63886791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档