如何使用epgsql驱动程序连接到Erlang中的PostgreSQL?

时间:2011-05-29 11:51:06

标签: postgresql erlang

我想在Erlang中访问PostgreSQL数据库。我下载了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").

然后我开始使用c(pgsql).c(dbtest)编译模块。 但是当我执行dbtest:dbquery().时,我收到了这个错误:

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

有关如何使用Erlang连接到PostgreSQL数据库的任何建议吗?

2 个答案:

答案 0 :(得分:6)

Rebar是一个很好用的工具,但是我发现知道如何构建项目很好,这样你就可以在出现问题时告诉你该怎么做。尝试像这样组织你的项目:

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

然后cd进入deps/epqsql并运行make来构建库。

您的dbtest.erl文件也应明确引用该库,将其添加到顶部附近:

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

您可能希望在进行更改时使用编译代码的Makefile(或rebar),但是,请尝试现在编译:{{1​​}}。

进行测试时,请确保正确设置了加载路径,请尝试:erlc -I deps/epqsql/ebin -o ebin src/dbtest.erl。当erl控制台加载时,请尝试erl -pz deps/epqsql/ebin/ ebin/,看看会发生什么!

我的机器上没有Postgresql设置但是,我能够通过此设置获得更合理的错误。

答案 1 :(得分:-3)

我建议使用ejabber pgsql驱动程序https://svn.process-one.net/ejabberd-modules/pgsql/trunk/