gpt4 book ai didi

mysql - golang mysql exec 占位符 "?"未展开

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:39 26 4
gpt4 key购买 nike

我觉得我一定完全没有捕获要点。我尝试按照下面的示例运行一些东西,但是 ? 没有扩展到传入的参数中。

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)

此外,谁在关心扩大它?它显示在 docdatabase/sql 但其他对话暗示这可能是驱动程序的问题。

我错过了什么?非常感谢任何指向正确方向的指针。

最佳答案

您(可能)没有告诉它使用 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

我还强烈建议您打印出数据库连接过程和查询过程中的任何错误。可能是你正在使用驱动程序,但你缺少权限,数据库已关闭等。

关于mysql - golang mysql exec 占位符 "?"未展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com