"错误op_response:0",带有预处理语句

Atl*_*las 6 sql firebird go

我正在使用来自"github.com/nakagami/firebirdsql"的firebird数据库驱动程序和GO1.11 + FB2.5

但我无法准备SELECT工作,它在执行第二个QUERYROW()时抛出"错误op_response:0"错误.有任何想法吗?

有没有替代司机?或者我使用不正确的驱动程序?

func test1(tx *sql.Tx) {
    sqlStr := "SELECT number FROM order WHERE id=?"
    stmt, err := tx.Prepare(sqlStr)
    if err != nil {
        panic(err.Error())
    }
    var value string
    err = stmt.QueryRow(123).Scan(&value)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(value)

    err = stmt.QueryRow(200).Scan(&value)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(value)    
}
Run Code Online (Sandbox Code Playgroud)

结果:

INV20183121
panic: Error op_response:0

goroutine 1 [running]:
main.test1(0xc00009c000, 0xc0000a8200)
Run Code Online (Sandbox Code Playgroud)

abb*_*bot 1

我可以大胆猜测一下。查看github.com/nakagami/firebirdsql源代码,似乎是唯一可能产生此错误的代码路径。看这里,它忽略返回的任何网络错误recvPackets,这意味着:网络套接字上的任何东西都会中断,并且您会收到此错误(因为这就是recvPackets网络错误时返回的内容)。

我建议使用未注释的代码重建代码,并查看网络连接上实际debugPrint发生的情况。