Я использовал драйвер golang, предоставленный https://github.com/dancannon/gorethink. Насколько я понимаю, я никогда не закрываю соединение и не подключаюсь повторно. Я не могу закрыть соединение, потому что я не знаю, как установить соединение. Что я знаю, как получить сеанс, и начинаю думать, что не знаю, как правильно получить сеанс.
Итак, мой вопрос:
- Как исправить ошибку?
- Как закрыть соединение и снова подключиться?
РЕДАКТИРОВАТЬ:
@OneOfOne Не какой-то, в основном весь связанный код:
// How i define session:
session, e := r.Connect(r.ConnectOpts{
Address: "localhost:28015",
Database: "database",
MaxActive: 0,
MaxIdle: 0,
// IdleTimeout: time.Minute,
})
//
// Inserting
inserts := map[string]interface{}{"something": something, "something1": something1, "something2": something2}
r.Db("database").Table("table").Insert(inserts).RunWrite(session)
//
// Updating
r.Db("database").Table("table").Filter(map[string]interface{}{"parameter": parameter}).Update(map[string]interface{}{"something" : somethingMore}).RunWrite(session)
//
// Get some row
row, e := r.Db("database").Table("table").Filter(map[string]interface{}{"parameter": parameter}).RunRow(session)
if e!= nil {
//error
}
@neumino: вот что выходит, когда я нажимаю ulimit -a
└─ $ ▶ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30419
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 30419
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Я не знаю, слишком ли это низко или слишком высоко.
@VonC: Это одна из вещей, которых я не понимаю, я не вижу, как соединение находится внутри пула:
//http://godoc.org/github.com/dancannon/gorethink#Pool
type Pool struct {
Session *Session
// Maximum number of idle connections in the pool.
MaxIdle int
// Maximum number of connections allocated by the pool at a given time.
// When zero, there is no limit on the number of connections in the pool.
MaxActive int
// Close connections after remaining idle for this duration. If the value
// is zero, then idle connections are not closed. Applications should set
// the timeout to a value less than the server's timeout.
IdleTimeout time.Duration
// contains filtered or unexported fields
}
Или я просто неправильно понял, что такое пул или что такое соединение (или даже что такое сеанс)?
init()
?main()
, а потом передавать? Это глобалка? Здесь поможет лучшее понимание вашей кодовой базы. - person elithrar   schedule 13.07.2014session, e := r.Connect(r.ConnectOpts{})
? Я инициализирую это в main(), а затем передаю его функции вставки/обновления/получения в качестве одного из параметров. Это не глобальная переменная. В основном, как в здесь - person Joni Atif   schedule 13.07.2014