去数据库连接器:go-sql-driver工作,其他一切“未知驱动程序,忘记导入?”

问题描述 投票:-3回答:1

当我尝试以这种方式使用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?)

我已经完成了这两个软件包,我真的不确定它为什么不编译

sql go postgresql-9.3
1个回答
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驱动程序(或者您最终选择的那个)。

© www.soinside.com 2019 - 2024. All rights reserved.