使用mysql插入并选择时Golang-goroutines中的错误

问题描述

    package main

    import (
        "database/sql"
        "fmt"
        "log"
        "sync"
        "time"

        _ "github.com/go-sql-driver/MysqL"
    )

    func main() {
        db,err := sql.Open("MysqL","SECRET")
        if err != nil {
            log.Println(err)
        }
        _,uerr := db.Exec("USE " + "try")
        if uerr != nil {
            log.Println(uerr)
        }
        defer db.Close()


        w := new(sync.WaitGroup)
        w.Add(100)

        syn := func(text string,w *sync.WaitGroup) {
            defer w.Done()
            db.Exec("INSERT INTO test VALUES(?)",text)
            fmt.Println(text)
        }

        for i := 0; i < 100; i++ {
            msg := fmt.Sprintf("Content %d",i)
            go syn(msg,w)

        }
        w.Wait()

        var (
            cn string
        )
        rows,er := db.Query("SELECT * FROM test")
        if er != nil {
            log.Println(er)
        }

        for rows.Next() {
            err := rows.Scan(&cn)
            if err != nil {
                log.Println(err)
            }
            fmt.Println("-----",cn)
        }
    }

当我运行这段代码时,同步功能可以很好地运行100次。 但是循环之后,出现如下错误

错误1046:未选择数据库紧急情况:运行时错误:内存无效 地址或nil指针取消引用[信号0xc0000005代码= 0x0 addr = 0x0 pc = 0x4dc067]

我的目标是使用goroutines插入MysqL数据库。 为什么会发生错误?和我该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)