我想访问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").
Run Code Online (Sandbox Code Playgroud)
然后,我开始ERL和编译的模块c(pgsql).和c(dbtest).但是当我执行时,dbtest:dbquery().我得到了这个错误:
** exception error: undefined function pgsql:connect/4
in function dbtest:dbquery/0
Run Code Online (Sandbox Code Playgroud)
关于如何使用Erlang连接到PostgreSQL数据库的任何建议?
Rebar是一个很好用的工具,但是我发现知道如何构建项目很好,这样你就可以在出现问题时告诉你该怎么做.尝试像这样组织你的项目:
/deps/epqsql/
/src/dbtest.erl
/ebin
Run Code Online (Sandbox Code Playgroud)
然后cd进入deps/epqsql并运行make以构建库.
您的dbtest.erl文件还应明确引用该库,将其添加到顶部附近:
-include_lib("deps/epgsql/include/pgsql.hrl").
Run Code Online (Sandbox Code Playgroud)
您可能希望在进行更改时使用编译代码的Makefile(或rebar),但是,请尝试将其编译为:erlc -I deps/epqsql/ebin -o ebin src/dbtest.erl.
测试时,确保正确设置了加载路径,尝试:erl -pz deps/epqsql/ebin/ ebin/.当erl控制台加载时,试着dbtest:dbquery().看看会发生什么!
我的机器上没有Postgresql设置,但是我能够通过此设置获得更合理的错误.
| 归档时间: |
|
| 查看次数: |
3255 次 |
| 最近记录: |