2
respostas

sql: unknown driver

Professor,

Estou com erro de conexão com o banco postgres.

adriano@mac01062008:~/go/src/adriano$ go run main.go

panic: sql: unknown driver "postgres" (forgotten import?)

goroutine 1 [running]:
main.conectaBanco()
    /home/adriano/go/src/adriano/main.go:22 +0x54
main.main()
    /home/adriano/go/src/adriano/main.go:28 +0x25
exit status 2

adriano@mac01062008:~/go/src/adriano$ echo $GOPATH /home/adriano/go

adriano@mac01062008:~/go/src/adriano$ cat go.mod

module github.com/lib/pq

go 1.21.1

main.go

package main

import (
    "database/sql"
    "html/template"
    "net/http"
)

var temp = template.Must(template.ParseGlob("templates/*.html"))

type Produto struct {
    Nome       string
    Descricao  string
    Preco      float64
    Quantidade int
}

func conectaBanco() *sql.DB {
    conexao := "user=postgres dbname=alura_loja password=adriano hostname=localhost sslmode=disable"
    db, err := sql.Open("postgres", conexao)
    if err != nil {
        panic(err.Error())
    }
    return db
}

adriano@mac01062008:~/go/src/adriano$ go version

go version go1.21.1 linux/amd64

Quando adiciono a lib no import o erro muda

package main 

import (
    "database/sql"
    "html/template"
    "net/http"

    _ "github.com/lib/pq"
)

adriano@mac01062008:~/go/src/adriano$ go run main.go

package command-line-arguments
    imports github.com/lib/pq
    imports github.com/lib/pq: import cycle not allowed

O que fiz de errado?

2 respostas

Oii, Adriano! Tudo certo?

O erro "sql: unknown driver "postgres" (forgotten import?)" geralmente ocorre quando o driver necessário não está sendo importado corretamente.

No arquivo go.mod, você definiu o módulo como module github.com/lib/pq, que é o mesmo pacote que você está tentando importar. Isso está causando um ciclo de importação, que não é permitido na Golang, e é por isso que você está recebendo o erro "import cycle not allowed".

Para resolver isso, você pode mudar o nome do módulo no seu arquivo go.mod para algo que não seja github.com/lib/pq.

Depois de fazer essas alterações, tente rodar o seu código novamente com o go run main.go.

Se a dúvida persistir, estou disponível! :)

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Funcionou quando alterei o meu arquivo go.mod da seguinte forma.

module github.com/lib/pq2

go 1.21.1

require github.com/lib/pq v1.10.9 // indirect