@ENigma371

Где допустил ошибку при работе Golang pgx с postgresql?

Добрый день!
В СУБД postgres создал таблицу с (id. title. anons и full_test) и пытаюсь через golang с использованием библиотеки pgx добавлять в нее данные
func save_article(w http.ResponseWriter, r *http.Request) {
	title := r.FormValue("title")
	anons := r.FormValue("anons")
	full_text := r.FormValue("full_text")

	// Подключение к СУБД

	conn, err := pgx.Connect(context.Background(), "postgres://postgres:pass@localhost:5432/golang")
	if err != nil {
		fmt.Fprintf(os.Stderr, "Unable to connect to database: #{err}\n")
		os.Exit(1)
	}
	defer conn.Close(context.Background())

	// Добавление данных в БД

	_, err := conn.Query(context.Background(), "INSERT INTO articles (title, anons, full_text) VALUES($1, $2, $3);", title, anons, full_text)
	if err != nil {
		fmt.Fprint(os.Stderr, "INSERT failed: #{err}\n")
		os.Exit(1)
	}

}


Не могу понять почему <<_, err := conn.Query(context.Background(),>> в этом месте после err ругается на ":", из-за этого не дает запустить код. приходится убирать
после заполнения всей формы title, anons, full_text в БД попадает все кроме full_text
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 2
@darst
У тебя уже переменная err была объявлена выше в строке
conn, err := pgx.Connect........
И получается в этой строке
_, err := conn.Query(context.Background().....
опять пытаешься её объявить. Поэтому и ругается. Просто убери в этой строке :
Ответ написан
@falconandy
Сначала залоггируйте full_text, возможно он приходит пустой и pgx ни при чем.
full_text := r.FormValue("full_text")
log.Print(full_text)


Не работал с pgx, но обычно для Insert используют Exec вместо Query, хотя возможно нет никакой разницы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы