当我尝试以这种方式使用数据库/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,并且真的不确定为什么它没有编译
你在做吗
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
驱动程序(或最终选择的任何驱动程序(。