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)
}
}
When i run this code, syn funtion works well for 100 times. But after the loop, i got an error like below.
Error 1046: No database selected panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x0 pc=0x4dc067]
It is my objective to insert into mysql database using goroutines. Why do the error happen? and How can i do??
User contributions licensed under CC BY-SA 3.0