当我尝试以这种方式使用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?)
我已经完成了这两个软件包,我真的不确定它为什么不编译
答案 0 :(得分:1)
你在做什么
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
驱动程序(或最终选择的那个)。