«Ошибка op_response: 0» с подготовленным оператором - PullRequest
0 голосов
/ 05 октября 2018

Я использую драйвер базы данных Firebird из "github.com/nakagami/firebirdsql" с GO1.11 + FB2.5

Но я не могу подготовить SELECT к работе, он выдает "Ошибка op_response: 0 "ошибка при выполнении 2-го QUERYROW ().Есть идеи?

Есть ли альтернативный драйвер?Или я использую неверный драйвер?

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)    
}

Результат:

INV20183121
panic: Error op_response:0

goroutine 1 [running]:
main.test1(0xc00009c000, 0xc0000a8200)

1 Ответ

0 голосов
/ 02 ноября 2018

Я могу рискнуть предположить.Глядя на github.com/nakagami/firebirdsql источники, этот кажется единственным путем кода, который может вызвать эту ошибку.Смотря здесь , он игнорирует любые сетевые ошибки, возвращаемые recvPackets, что означает: любая вещь на сетевом сокете ломается, и вы получаете эту ошибку обратно (потому что это то, что recvPacketsвозвращается в случае ошибки сети).

Я бы предложил пересоздать ваш код с кодом debugPrint без комментариев и посмотреть, что на самом деле происходит в сетиподключение.

...