使用 golang "commands out of sync. Did you run multiple statements at once?" 创建与 phpmyadmin 的连接时出错



我在使用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是否有任何以前挂起的连接。如果是,那么杀死它,然后再试一次。

最新更新