Resuelto, gracias a los que me preguntan que error fue:
pq: invalid byte sequence for encoding "UTF8": 0xe3 0xb0 0xc4Esto significaba que necesitaba almacenar la contraseña como bytea
Si quiero insertar una contraseña sha265 en una base de datos de Postgres, ¿qué tipo de datos usaría? El texto no parece estar funcionando para mí.
Aquí está la línea de código con la consulta.
query := fmt.Sprintf("INSERT INTO users(username,password) VALUES('%s','%s') returning uid;", username, hashedPassword)Para aquellos que se preguntan aquí está el código Go. Sin embargo, como dije, funciona bien siempre que la contraseña no esté encriptada, así que no creo que esto sea de mucha ayuda.
func hashPassword(password string) string { h := sha256.New() passwordBytes := []byte(password) passwordHashed := h.Sum(passwordBytes) return string(passwordHashed) } func createUser(username string, password string, passwordConfirm string) bool { dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", DB_USER, DB_PASSWORD, DB_NAME) db, err := sql.Open("postgres", dbinfo) checkErr(err) defer db.Close() hashedPassword := hashPassword(password) hashedPasswordConfirm := hashPassword(passwordConfirm) if hashedPassword != hashedPasswordConfirm { return false } var lastInsertId int query := fmt.Sprintf("INSERT INTO users(username,password) VALUES('%s',$trick$%s$trick$) returning uid;", username, hashedPassword) err = db.QueryRow(query).Scan(&lastInsertId) fmt.Println(lastInsertId) if err != nil { return false; } return true; }Aquí está la declaración de la tabla.
CREATE TABLE users ( uid SERIAL, username text NOT NULL UNIQUE, password text NOT NULL, weekly_goals bytea, CONSTRAINT users_pkey PRIMARY KEY (uid) ) WITH (OIDS=FALSE);