Как подключиться к PostgreSQL в Erlang с помощью драйвера epgsql?

Я хотел бы получить доступ к базе данных PostgreSQL в Erlang. Я загрузил epgsql драйвер, это было несколько каталогов и файлов, но я не понимаю, как его использовать.

как я могу написать программу Erlang и использовать драйвер epgsql для доступа к базе данных PostgreSQL?

Я создал новую папку и скопировал все файлы из src/ в драйвере и pgsql.hrl в мою новую папку. Затем я создал простую тестовую программу:

-module(dbtest).
-export([dbquery/0]).

dbquery() ->
    {ok,C} = pgsql:connect("localhost", "postgres", "mypassword",
                                     [{database, "mydatabase"}]),
    {ok, Cols, Rows} = pgsql:equery(C, "select * from mytable").

Затем Я запустил erl и скомпилировал модули с помощью c(pgsql). и c(dbtest). Но затем, когда я exeute dbtest:dbquery(). Я получаю эту ошибку:

** exception error: undefined function pgsql:connect/4
     in function  dbtest:dbquery/0

любые предложения о том, как я могу подключиться к базе данных PostgreSQL с помощью Erlang?

2 ответов


арматура-хороший инструмент для использования, но я нахожу, что хорошо знать, как ваш проект должен быть структурирован, чтобы вы могли сказать, что делать, когда все идет не так. Попробуйте организовать свой проект следующим образом:

/deps/epqsql/
/src/dbtest.erl
/ebin

затем cd в deps/epqsql и работать make построить библиотеку.

код dbtest.erl файл также должен явно ссылаться на библиотеку, добавьте это в верхней части:

-include_lib("deps/epgsql/include/pgsql.hrl").

вы, вероятно, захотите использовать Makefile (или rebar), который компилирует ваш код, когда вы вносите изменения, но попробуйте это, чтобы скомпилировать вещи прямо сейчас:erlc -I deps/epqsql/ebin -o ebin src/dbtest.erl.

при тестировании убедитесь, что ваши пути загрузки установлены правильно, попробуйте:erl -pz deps/epqsql/ebin/ ebin/. Когда консоль erl загружается, попробуйте dbtest:dbquery(). и посмотрите, что произойдет!

у меня нет настройки Postgresql на моей машине, но я смог получить более разумные ошибки с этой настройкой.


Я рекомендую использовать драйвер ejabber pgsqlhttps://svn.process-one.net/ejabberd-modules/pgsql/trunk/