Как подключиться к 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/