2016-02-24 4 views
0

My Postgres работает локально на Mac через порт 5432GO открытые локальные Postgres соединения

Она имеет базу данных по его имени test, и эта база данных имеет одну таблицу в ней под названием test_table

Я пытаюсь подключитесь к нему с помощью GO.

Импорт:

"database/sql" 
_ "github.com/lib/pq" 

Главная:

db, err := sql.Open("postgres", "postgres://user:@localhost:5432/test") 
if err != nil { 
    log.Println(err) 
} 
defer db.Close() 

if err2 := db.Ping(); err2 != nil { 
fmt.Println("Failed to keep connection alive") 
} 

db.QueryRow("INSERT INTO test.test_table (name) VALUES (`something`)) RETURNING id").Scan(&id) 

fmt.Println(id) 

Для проверки соединения я бегу Ping, а также попытаться вставить одну строку в test_table. Но он возвращает меня:

Failed to keep connection alive 
0 

Как я могу исправить эту проблему?

+0

Что содержит 'err2'? Вы также должны напечатать это. – kichik

+0

сказал, что «SSL не включен на сервере», поэтому я сделал sslmode = disable и теперь Ping проходит. Проблема в том, что она по-прежнему не добавляет строку в таблицу. Как я могу проверить список таблиц или что-то вроде этого, чтобы убедиться, что я в правильной базе данных? –

+0

Разве вы не используете 'Exec()' для этого? – kichik

ответ

3

В подобных ситуациях, он платит, чтобы пройти через следующий перечень:

  • вы можете подключиться к серверу, используя те же аргументы, предоставленные на сервер идут? То есть можете ли вы запустить psql -U user -p 5432 -h localhost test?
  • Вы печатаете все ошибки? В этом вопросе следует напечатать err2, так как он содержит важную информацию о том, что происходит. Scan также возвращает ошибку, которая не сохраняется в переменной или не печатается. Если это так, вы могли бы увидеть проблему синтаксиса в своем запросе.
  • Вы можете запустить запрос в оболочке SQL? (psql) Если нет, сначала исправьте запрос, прежде чем продолжить.
Смежные вопросы