@qwentry

GoLang, подключение к базе — unexpected EOF в чем причина?

Суть вопроса:
На Windows 10 все работает без проблем, как только я перекидываю всю папку на MacBook и запускаю. то при запуске выдает эту ошибку "unexpected EOF".
В чем причина? Код одинаковый там и там соответственно, но на mac os не работает, а на Win 10 все ок.

package main

import (
  "database/sql"
  "fmt"

  _ "github.com/lib/pq"
)

const (
  host     = "localhost"
  port     = 5432
  user     = "postgres"
  password = "1234"
  dbname   = "productdb"
)


func main() {
  psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
    "password=%s dbname=%s sslmode=disable",
    host, port, user, password, dbname)
  db, err := sql.Open("postgres", psqlInfo)
  if err != nil {
    panic(err)
  }
  defer db.Close()

    result, err := db.Exec("insert into Products (model, company, price) values ('iPhone 11 Pro Max', $1, $2)",
        "Apple", 82000)
    if err != nil{
        panic(err) //На это ругается
    }
    fmt.Println(result.RowsAffected())
}


panic: unexpected EOF
goroutine 1 [running]:
main.main()
        /Users/admin/Desktop/test/add.go:37 +0x358
exit status 2


Upd: ошибка была в том, что port был не верно указан в коде. Подробнее в комментариях
  • Вопрос задан
  • 3131 просмотр
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Как правило подобная ситуация говорит о проблемах с подключением к базе, драйверах(библиотеках).
Первое, что имеет смысл сделать - это настроить соединения:
db.SetConnMaxIdleTime(0)
db.SetConnMaxLifetime(0)
db.SetMaxIdleConns(10)
db.SetMaxOpenConns(10)


Если не помогло - нужно убедиться, что база действительно слушает указанный хост и порт в настройках.
Для PostgreSQL
psql -h 127.0.0.1 -p 5432 -U user_name  database_name

Для MySQL
mysql -h 127.0.0.1 -P 3307 -u user_name -p database_name

Очень важно чтобы указано было именно 127.0.0.1 (для MySQL), иначе он всё равно будет подключаться по сокету несмотря на то, что указан localhost.

Если настройки верны и база отвечает - стоит попробовать обновить драйвера(библиотеки) баз, возможно саму базу.
Сталкивался с ситуациями, когда с обновлением подобная проблема уходила.

Еще есть смысл смотреть логи базы, там может быть более подробно описана причина обрыва соединения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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