Задать вопрос
@Dearismont

Подключение к БД Postgres в golang?

Доброго времени суток!
Я понимаю, что вопрос максимально глупый, но всё же я не смог найти на него решения, может кто подскажет как можно его решить
Суть вопроса: я пишу приложение мобильное и хочу подключить к базе данных в Docker'e внутри кода (в Docker'e всё создано, выполнено подключение и тд) и ручками легко подключаюсь, но я не могу подключить в самом коде (Ошибка инициализации БД: pq: password authentication failed for user "postgres")
Буду рад подсказке как это решить. Заранее спасибо!
Вот сам код программы:
func main() {
if err := initConfig(); err != nil {
log.Fatalf("Ошибка инициализации настроек: %s", err.Error())
}

db, err := repository.NewPostgresDB(repository.Config{
Host: "localhost",
Port: "5436",
Username: "postgres",
Password: "5674",
DBName: "postgres",
SSLMode: "disable",
})

if err != nil {
log.Fatalf("Ошибка инициализации БД: %s", err.Error())
}

repos := repository.NewRepository(db)
services := service.NewService(repos)
handlers := handler.NewHandler(services)

srv := new(todo.Server)
if err := srv.Run(viper.GetString("8000"), handlers.InitRoutes()); err != nil {
log.Fatalf("Ошибка при запуске сервера: %s", err.Error())
}
}
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Dearismont Автор вопроса
Я нашёл ошибку (хотя бы я так это не назвал)
Проблема в том, что библиотека sqlx не поддерживает перенос строк, не знаю с чем это связано
Было написано так:
db, err := sqlx.Open("postgres", fmt.Sprintf("host=%s port=%s user=%s dbname=%s"+
"password=%s sslmode=%s", cfg.Host, cfg.Port, cfg.Username, cfg.DBName, cfg.Password,
cfg.SSLMode))
А должно быть так:
db, err := sqlx.Open("postgres", fmt.Sprintf("host=%s port=%s user=%s dbname=%s password=%s sslmode=%s", cfg.Host, cfg.Port, cfg.Username, cfg.DBName, cfg.Password, cfg.SSLMode))
Всем спасибо за потраченное Вами время
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Потому что, если у вас всё в Докере, подключаться надо по имени контейнера, а не к локалхосту.
Ответ написан
Ваш ответ на вопрос

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

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