Проблема в golang проекте после перевода на go modules
Приложение на golang, работающее с БД, перевел на работу с modules. Сделал go mod init, закачал все зависимости. Проект без ошибок. Билдится успешно. Но ряд библиотек стали работать с ошибками. К примеру, используется github.com/jmoiron/sqlx. При выполнении NamedExec возникает ошибка
sql: expected 0 arguments, got 2.
Причем параметры передаются в запрос. Если их не передать, то будет ошибка, что они не переданы.
И, самое главное, если убрать go modules из проекта, то такой ошибки не будет, запрос успешно выполнится.
Как может go modules влиять на возникновение такого рода ошибок, куда смотреть для исправления? Версии библиотек указаны верно в файле mod.
Код функции ниже:
import (
"fmt"
"strconv"
"time"
_ "github.com/godror/godror"
"github.com/jmoiron/sqlx"
)
var sqlUpdateIssue = `update TT_MYTABLE t
set t.nm = :nm
where t.id = :id`
func myFunc() {
p, err := sqlx.Connect("godror", "****")
if err != nil {
fmt.Println(err)
return
}
pool = p
m, _ := time.ParseDuration("5m")
pool.SetConnMaxLifetime(m)
pool.SetMaxIdleConns(10)
pool.SetMaxOpenConns(10)
IDIssue, err := strconv.Atoi("123")
if err != nil {
logg.Error(err)
return
}
mp := map[string]interface{}{
"nm": "KAT-101",
"id": IDIssue}
fmt.Println(m)
_, err = pool.NamedExec(sqlUpdateIssue, mp)
if err != nil {
logg.Error(err)
}
}
Содержимое go.mod:
go 1.14
require (
github.com/andygrunwald/go-jira v1.12.0
github.com/godror/godror v0.17.0
github.com/jmoiron/sqlx v1.2.0
github.com/sirupsen/logrus v1.6.0
github.com/trivago/tgo v1.0.7
github.com/urfave/cli v1.22.4
google.golang.org/appengine v1.6.6 // indirect
)
Ответы (1 шт):
По умолчанию go mod init тянет последний релиз импортируемых ресурсов, которые могут достаточно давно не обновляться, как в моем случае. Поэтому нужно каждый проект подгружать из master. Решить можно через команду:
go get -u github.com/jmoiron/sqlx@master
После чего обновится и go.mod файл.