Go 数据库连接器:go-sql-driver 工作,其他一切 "unknown driver, forgotten import?"
Go Database Connector: go-sql-driver works, everything else "unknown driver, forgotten import?"
当我尝试以这种方式使用 database/sql 时,它会编译并运行:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
但如果我尝试使用 postgres 特定的连接器,它甚至无法编译:
import(
"database/sql"
_ "github.com/lib/pq"
)
import(
"database/sql"
_ "github.com/jbarham/gopgsqldriver"
)
都因错误而失败
sql: unknown driver "mysql" (forgotten import?)
我已经完成了这两个包的 go get,但我真的不确定为什么它没有编译
你在做什么
db, err := sql.Open("mysql",
稍后呢?例如,当您导入 "github.com/lib/pq"
时,它会通过调用 sql.Register
来注册自己,然后在 sql.Open
的源代码中您有:
func Open(driverName, dataSourceName string) (*DB, error) {
driversMu.RLock()
driveri, ok := drivers[driverName]
driversMu.RUnlock()
if !ok {
return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
}
}
因此,由于您不再导入 mysql
,您需要更改 sql.Open
以使用 pq
驱动程序(或您最终选择的驱动程序)。
当我尝试以这种方式使用 database/sql 时,它会编译并运行:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
但如果我尝试使用 postgres 特定的连接器,它甚至无法编译:
import(
"database/sql"
_ "github.com/lib/pq"
)
import(
"database/sql"
_ "github.com/jbarham/gopgsqldriver"
)
都因错误而失败
sql: unknown driver "mysql" (forgotten import?)
我已经完成了这两个包的 go get,但我真的不确定为什么它没有编译
你在做什么
db, err := sql.Open("mysql",
稍后呢?例如,当您导入 "github.com/lib/pq"
时,它会通过调用 sql.Register
来注册自己,然后在 sql.Open
的源代码中您有:
func Open(driverName, dataSourceName string) (*DB, error) {
driversMu.RLock()
driveri, ok := drivers[driverName]
driversMu.RUnlock()
if !ok {
return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
}
}
因此,由于您不再导入 mysql
,您需要更改 sql.Open
以使用 pq
驱动程序(或您最终选择的驱动程序)。