我在使用golang从MySQL数据库获取数据时遇到了一些问题。下面是我的代码和我面临的错误
包装主
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func ConnectMsqlDb() (db *sql.DB, err error) {
db, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:"+sqlDbPort+")/"+sqlDB, sqlUserName, sqlPassword, dbServerIP))
if err != nil {
return nil, err
}
//defer db.Close()
err = db.Ping()
if err != nil {
return nil, err
}
return db, nil
}
func GetSqlData() (err error, data interface{}) {
db, err := ConnectMsqlDb()
if err != nil {
// here it will returning me the error
return err, nil
}
rows, err := db.Query("SELECT * FROM users")
if err != nil {
return err, nil
}
for rows.Next() {
}
defer db.Close()
fmt.Println(rows)
return err, rows
}
func main() {
err, data := GetSqlData()
fmt.Println("data", data, "err", err)
}
错误
data commands out of sync. Did you run multiple statements at once?
有人能告诉我为什么我面临这个问题吗
如果在打开与mysqld
的连接时出现错误,则可能是MySQL服务器(mysqld(阻止了主机与其连接。这意味着mysqld收到了来自给定主机的许多连接请求,这些请求在在中间被中断。
阅读原因?为了确认,您还可以查看DB的日志。因此,解锁它的一种方法是使用MySQL CLI:刷新缓存的主机
mysql> FLUSH HOSTS;
然后重试连接。
另外,也要读一读这个答案。可能会有所帮助。
您可以使用(对于Linux(:检查mysqld使用的套接字的状态
netstat -nt
检查从主机到mysqld是否有任何以前挂起的连接。如果是,那么杀死它,然后再试一次。