你(可能)不告诉它使用mysql驱动程序;
db, err := sql.Open("mysql", connString)
下面是我的一些示例代码:
var query = "INSERT IGNORE INTO blah (`col1`, `col2`, `col3`) VALUES (?, ?, ?)"
r, err := db.Query(query, some_data_1, some_data_2, some_data_3)
// Failure when trying to store data
if err != nil {
msg := fmt.Sprintf("fail : %s", err.Error())
fmt.Println(msg)
return err
}
r.Close() // Always do this or you will leak connections
我创建MySQL池(是的,这是一个游泳池不一个接头):
import (
// mysql driver
_ "github.com/go-sql-driver/mysql"
"database/sql"
"fmt"
)
connString := fmt.Sprintf("%s:%[email protected](%s:%d)/%s?timeout=30s",
user,
password,
host,
port,
database,
)
db, err := sql.Open("mysql", connString)
if err != nil {
return nil, err
}
err = db.Ping() // test the pool connection(s)
if err != nil {
return nil, err
}
return db, nil // No error, return the pool connections
我也强烈建议您打印出数据库连接过程和查询过程中的任何错误。这可能是因为您使用的是驱动程序,但您缺少权限,数据库已关闭等。
感谢您的努力jersten。我很困惑它是否应该起作用,你帮助解决了这个模棱两可的问题,因此我接受了答案。我没有发表一个非常透彻的问题,事实上,我的问题并没有包含这个问题。事实证明,我也想传递表名,这似乎不被支持。我为所有人提供了一个完整的工作示例。再次感谢! https://play.golang.org/p/VHTB2zddjl – zupa