我觉得我必须完全忽视这一点。
我尝试按照下面的示例运行某些内容,但?
未扩展到传入的参数中。
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
db, err := sql.Open(...)
if err != nil { ... }
_, err = db.Query("SELECT * FROM foo WHERE bar=?", bar)
另外,谁担心扩大它?它显示在database/sql
的{{3}},但其他对话暗示可能是司机关注的问题。
我错过了什么?非常感谢任何正确方向的指针。
答案 0 :(得分:0)
你(可能)没有告诉它使用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:%s@(%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
我还强烈建议您打印出数据库连接过程和查询过程中的任何错误。可能是您正在使用驱动程序,但您缺少权限,数据库已关闭等等。