Go Database Connector: go-sql-драйвер работает, все остальное "неизвестный драйвер, забытый импорт?" - PullRequest
0 голосов
/ 12 мая 2018

Когда я пытаюсь использовать базу данных / 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 для обоих этих пакетов и действительно не уверен, почему он не компилируется

1 Ответ

0 голосов
/ 12 мая 2018

Вы делаете

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 (или тот, который вы выберете).

...