英文:
How to setup project to work with odbc and mssql drivers?
问题
我正在尝试使用ODBC驱动程序,但是遇到了错误:
.\main.go:5: 导入但未使用:"code.google.com/p/odbc/api"
.\main.go:72: 未定义:Driver
.\main.go:76: 未定义:Driver
我尝试使用另一个驱动程序:go get github.com/denisenkom/go-mssqldb
,但遇到了相同类型的问题。这就是为什么我怀疑我没有正确设置环境,但无法找到问题所在的原因。
我的环境如下:
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Go\Projects
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set TERM=dumb
set CC=gcc
set GOGCCFLAGS=-g -O2 -m64 -mthreads
set CXX=g++
set CGO_ENABLED=1
我使用go get code.google.com/p/odbc
安装了ODBC。运行测试并成功完成:
C:\Go\Projects\src\code.google.com\p\odbc>go test -mssrv=.\sqlexp -v -run=MS ... --- PASS: TestMSSQLUTF16ToUTF8 (0.00 seconds) === RUN TestMSSQLExecStoredProcedure --- PASS: TestMSSQLExecStoredProcedure (0.01 seconds) PASS ok code.google.com/p/odbc 0.574s
我的代码如下(从mssql_test.go中复制):
package main
import (
"code.google.com/p/odbc/api"
"database/sql"
"flag"
"fmt"
"os"
"runtime"
"testing"
"time"
)
func mssqlConnect() (db *sql.DB, stmtCount int, err error) {
.........
return db, db.Driver().(*Driver).Stats.StmtCount, nil
}
func closeDB(t *testing.T, db *sql.DB, shouldStmtCount, ignoreIfStmtCount int) {
s := db.Driver().(*Driver).Stats
......
}
请注意,我只提供了翻译的部分,不包括代码部分。
英文:
I'm trying to use the odbc driver and I'm getting errors:
.\main.go:5: imported and not used: "code.google.com/p/odbc/api"
.\main.go:72: undefined: Driver
.\main.go:76: undefined: Driver
I tried to work with another driver: go get github.com/denisenkom/go-mssqldb
but ran unto the same type of problem.
That's why I suspect I didn't set up the environment right but unable to find the issue.
#My environment:#
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Go\Projects
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set TERM=dumb
set CC=gcc
set GOGCCFLAGS=-g -O2 -m64 -mthreads
set CXX=g++
set CGO_ENABLED=1
I installed odbc using go get code.google.com/p/odbc
Ran test and it finished fine:
C:\Go\Projects\src\code.google.com\p\odbc>go test -mssrv=.\sqlexp -v -run=MS
...
--- PASS: TestMSSQLUTF16ToUTF8 (0.00 seconds)
=== RUN TestMSSQLExecStoredProcedure
--- PASS: TestMSSQLExecStoredProcedure (0.01 seconds)
PASS
ok code.google.com/p/odbc 0.574s
My Code: (copied from mssql_test.go):
package main
import (
"code.google.com/p/odbc/api"
"database/sql"
"flag"
"fmt"
"os"
"runtime"
"testing"
"time"
)
func mssqlConnect() (db *sql.DB, stmtCount int, err error) {
.........
return db, db.Driver().(*Driver).Stats.StmtCount, nil
}
func closeDB(t *testing.T, db *sql.DB, shouldStmtCount, ignoreIfStmtCount int) {
s := db.Driver().(*Driver).Stats
......
答案1
得分: 2
.\main.go:5: 导入但未使用: "code.google.com/p/odbc/api"
.\main.go:72: 未定义: Driver
.\main.go:76: 未定义: Driver
删除 import
"code.google.com/p/odbc/api"
添加 import
"code.google.com/p/odbc"
将 *Driver
替换为 *odbc.Driver
。例如,
return db, db.Driver().(*odbc.Driver).Stats.StmtCount, nil
和
s := db.Driver().(*odbc.Driver).Stats
./main.go:5: 导入但未使用: "github.com/denisenkom/go-mssqldb" as mssql
将 import
改为
_ "github.com/denisenkom/go-mssqldb"
例如,
package main
import (
"database/sql"
_ "github.com/denisenkom/go-mssqldb"
)
func main() {
conn, err := sql.Open("mssql", makeConnStr())
}
如果仅为了其副作用(初始化)而导入一个包,请使用空白标识符作为显式包名:
import _ "lib/math"
英文:
.\main.go:5: imported and not used: "code.google.com/p/odbc/api"
.\main.go:72: undefined: Driver
.\main.go:76: undefined: Driver
Delete import
"code.google.com/p/odbc/api"
Add import
"code.google.com/p/odbc"
Replace *Driver
with *odbc.Driver
. For example,
return db, db.Driver().(*odbc.Driver).Stats.StmtCount, nil
and
s := db.Driver().(*odbc.Driver).Stats
./main.go:5: imported and not used: "github.com/denisenkom/go-mssqldb" as mssql
Change import
to
_ "github.com/denisenkom/go-mssqldb"
For example,
package main
import (
"database/sql"
_ "github.com/denisenkom/go-mssqldb"
)
func main() {
conn, err := sql.Open("mssql", makeConnStr())
}
> The Go Programming Language Specification
>
> Import declarations
>
> To import a package solely for its side-effects (initialization), use
> the blank identifier as explicit package name:
>
> import _ "lib/math"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论