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()
}