Как отключить соединение Postgrex?

Я пытаюсь выяснить, как подключиться к базе данных postgres, выполнить запрос, а затем отключиться.

Глядя на Postgrex, я устанавливаю соединение, используя

{:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")

Затем я выполняю свой запрос, используя

Postgrex.query!(pid, "SELECT user_id, text FROM comments", [])

Но тогда как мне отключиться?

Я хотел бы отключиться, потому что я перебираю N баз данных и выполняю один и тот же запрос для всех них.

Я пытался выйти из процесса, например Process.exit(pid, :bye), но он убивает процесс нереста также потому, что он начался с start_link/3, Я не могу найти start/3 функция в Postgrex,

1 ответ

Решение

Как pid вернулся Postgrex.start_link это GenServer, ты можешь использовать GenServer.stop/1:

iex(1)> {:ok, pid} = Postgrex.start_link(hostname: "localhost", username: "postgres", password: "postgres", database: "postgres")
{:ok, #PID<0.277.0>}
iex(2)> GenServer.stop(pid)                                                                                                 
:ok
iex(3)> GenServer.stop(pid)
** (exit) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
    (stdlib) proc_lib.erl:797: :proc_lib.stop/3
Другие вопросы по тегам