我正在使用来自"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)
我可以大胆猜测一下。查看github.com/nakagami/firebirdsql源代码,这似乎是唯一可能产生此错误的代码路径。看这里,它忽略返回的任何网络错误recvPackets,这意味着:网络套接字上的任何东西都会中断,并且您会收到此错误(因为这就是recvPackets网络错误时返回的内容)。
我建议使用未注释的代码重建代码,并查看网络连接上实际debugPrint发生的情况。