1
resposta

Error ao conectar banco

Pessoal, boa noite

Estou usando o linux para fazer as atividades porém, tudo estava funcionando normalmente até eu parar desligar a máquina e voltar a fazer os exercícios, agora apresenta o seguinte error.

2019/10/30 21:07:33 pq: password authentication failed for user "postgres" 2019/10/30 21:07:33 http: panic serving 127.0.0.1:34338: runtime error: invalid memory address

eu procurei no google alguma solução e não tive sucesso.. alguém já passou por essa bronca ?

package main

import (
    "database/sql"
    "fmt"
    "log"
    "net/http"
    "text/template"

    _ "github.com/lib/pq"
)

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

/*Pega os arquivos de template e retorna */
var templates = template.Must(template.ParseGlob("templates/*.html"))

func main() {
    http.HandleFunc("/", index)
    http.ListenAndServe(":8000", nil)
}

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

func index(w http.ResponseWriter, r *http.Request) {

    fmt.Println("=- Conectando banco de dados =-")
    db := connectaComBancoDeDados()
    selectDeTodosOsProdutos, err := db.Query("select * from produtos")
    if err != nil {
        log.Println(err)
    }
    p := Produto{}
    produtos := []Produto{}

    for selectDeTodosOsProdutos.Next() {
        var id, quantidade int
        var nome, descricao string
        var preco float64
        err = selectDeTodosOsProdutos.Scan(&id, &nome, &descricao, &preco, &quantidade)

        if err != nil {
            panic(err.Error())
        }

        p.Nome = nome
        p.Descricao = descricao
        p.Preco = preco
        p.Quantidade = quantidade

        produtos = append(produtos, p)
    }

    templates.ExecuteTemplate(w, "Index", produtos)
    defer db.Close()
}
1 resposta

Rodolfo,

Se você esqueceu sua senha do postgres, poderá fazer o login sem a senha alterando “md5” para “confiar” no arquivo pg_hba.conf e reinicie o servidor PostgreSQL. Após o login, você pode ALTERAR o usuário do postgres:

ALTER USER postgres PASSWORD 'MyNewPassword';

Agora, novamente, altere sua entrada pg_hba.conf de "trust" para "md5" e reinicie o servidor PostgreSQL.

OBS: Se tiver duvidas sobre o procedimento acima, leia: http://pgdocptbr.sourceforge.net/pg80/client-authentication.html

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software