Как подключиться к PostgreSQL в Erlang с помощью драйвера epgsql? - PullRequest
6 голосов
/ 29 мая 2011

Я хотел бы получить доступ к базе данных 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).Но затем, когда я выполняю команду dbtest:dbquery()., я получаю эту ошибку:

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

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

Ответы [ 2 ]

6 голосов
/ 30 мая 2011

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

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

Затем перейдите на deps/epqsql и запустите make, чтобы собрать библиотеку.

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

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

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

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

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

0 голосов
/ 30 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...